6
6
// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=SELF_VARNAME | %FileCheck %s -check-prefix=CONTEXT_VARNAME
7
7
// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=SELF_STORAGE_VARNAME | %FileCheck %s -check-prefix=CONTEXT_STORAGE_VARNAME
8
8
9
+ // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=PARAM | %FileCheck %s -check-prefix=PARAM
10
+ // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=PARAM_CLOSURE | %FileCheck %s -check-prefix=PARAM
11
+ // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=LOCAL | %FileCheck %s -check-prefix=LOCAL
12
+
9
13
@propertyWrapper
10
14
struct Lazzzy < T> {
11
15
var wrappedValue : T
16
+ var projectedValue : String { " " }
17
+
18
+ init ( wrappedValue: T ) { fatalError ( ) }
19
+
12
20
func delegateOperation( ) -> Int { }
13
21
}
14
22
@@ -26,6 +34,7 @@ class MyClass {
26
34
let _ = #^CONTEXT^#
27
35
// CONTEXT: Begin completions
28
36
// CONTEXT-DAG: Decl[InstanceVar]/CurrNominal: foo[#MyMember#];
37
+ // CONTEXT-DAG: Decl[InstanceVar]/CurrNominal: $foo[#String#];
29
38
// CONTEXT-DAG: Decl[InstanceVar]/CurrNominal: _foo[#Lazzzy<MyMember>#];
30
39
// CONTEXT: End completions
31
40
@@ -38,9 +47,10 @@ class MyClass {
38
47
// CONTEXT_VARNAME-DAG: End completions
39
48
40
49
let _ = _foo. #^CONTEXT_STORAGE_VARNAME^#
41
- // CONTEXT_STORAGE_VARNAME: Begin completions, 3 items
50
+ // CONTEXT_STORAGE_VARNAME: Begin completions, 4 items
42
51
// CONTEXT_STORAGE_VARNAME-DAG: Keyword[self]/CurrNominal: self[#Lazzzy<MyMember>#]; name=self
43
52
// CONTEXT_STORAGE_VARNAME-DAG: Decl[InstanceVar]/CurrNominal: wrappedValue[#MyMember#]; name=wrappedValue
53
+ // CONTEXT_STORAGE_VARNAME-DAG: Decl[InstanceVar]/CurrNominal: projectedValue[#String#]; name=projectedValue
44
54
// CONTEXT_STORAGE_VARNAME-DAG: Decl[InstanceMethod]/CurrNominal: delegateOperation()[#Int#]; name=delegateOperation()
45
55
// CONTEXT_STORAGE_VARNAME-NOT: _
46
56
// CONTEXT_STORAGE_VARNAME: End completions
@@ -55,3 +65,34 @@ class MyClass {
55
65
// Same as CONTEXT_STORAGE_VARNAME.
56
66
}
57
67
}
68
+
69
+ func paramTest( @Lazzzy arg: MyMember ) {
70
+ #^PARAM^#
71
+ // PARAM: Begin completions
72
+ // PARAM-DAG: Decl[LocalVar]/Local: arg[#MyMember#]; name=arg
73
+ // PARAM-DAG: Decl[LocalVar]/Local: $arg[#String#]; name=$arg
74
+ // PARAM-DAG: Decl[LocalVar]/Local: _arg[#Lazzzy<MyMember>#]; name=_arg
75
+ // PARAM-DAG: Decl[FreeFunction]/CurrModule: paramTest({#arg: MyMember#})[#Void#]; name=paramTest(arg: MyMember)
76
+ // PARAM: End completions
77
+ }
78
+ func closureTest( ) {
79
+ func receive( fn: ( MyMember ) -> Void ) { }
80
+
81
+ receive { ( @Lazzzy arg: MyMember ) in
82
+ #^PARAM_CLOSURE^#
83
+ // Same as PARAM
84
+ }
85
+ }
86
+
87
+ func localTest( ) {
88
+ @Lazzzy var local : MyMember = . zero
89
+
90
+ #^LOCAL^#
91
+ // LOCAL: Begin completions
92
+ // LOCAL-DAG: Decl[LocalVar]/Local: local[#MyMember#]; name=local
93
+ // LOCAL-DAG: Decl[LocalVar]/Local: $local[#String#]; name=$local
94
+ // LOCAL-DAG: Decl[LocalVar]/Local: _local[#Lazzzy<MyMember>#]; name=_local
95
+ // LOCAL-DAG: Decl[FreeFunction]/CurrModule: paramTest({#arg: MyMember#})[#Void#]; name=paramTest(arg: MyMember)
96
+ // LOCAL: End completions
97
+ }
98
+
0 commit comments