66// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=SELF_VARNAME | %FileCheck %s -check-prefix=CONTEXT_VARNAME
77// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=SELF_STORAGE_VARNAME | %FileCheck %s -check-prefix=CONTEXT_STORAGE_VARNAME
88
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+
913@propertyWrapper
1014struct Lazzzy < T> {
1115 var wrappedValue : T
16+ var projectedValue : String { " " }
17+
18+ init ( wrappedValue: T ) { fatalError ( ) }
19+
1220 func delegateOperation( ) -> Int { }
1321}
1422
@@ -26,6 +34,7 @@ class MyClass {
2634 let _ = #^CONTEXT^#
2735// CONTEXT: Begin completions
2836// CONTEXT-DAG: Decl[InstanceVar]/CurrNominal: foo[#MyMember#];
37+ // CONTEXT-DAG: Decl[InstanceVar]/CurrNominal: $foo[#String#];
2938// CONTEXT-DAG: Decl[InstanceVar]/CurrNominal: _foo[#Lazzzy<MyMember>#];
3039// CONTEXT: End completions
3140
@@ -38,9 +47,10 @@ class MyClass {
3847// CONTEXT_VARNAME-DAG: End completions
3948
4049 let _ = _foo. #^CONTEXT_STORAGE_VARNAME^#
41- // CONTEXT_STORAGE_VARNAME: Begin completions, 3 items
50+ // CONTEXT_STORAGE_VARNAME: Begin completions, 4 items
4251// CONTEXT_STORAGE_VARNAME-DAG: Keyword[self]/CurrNominal: self[#Lazzzy<MyMember>#]; name=self
4352// CONTEXT_STORAGE_VARNAME-DAG: Decl[InstanceVar]/CurrNominal: wrappedValue[#MyMember#]; name=wrappedValue
53+ // CONTEXT_STORAGE_VARNAME-DAG: Decl[InstanceVar]/CurrNominal: projectedValue[#String#]; name=projectedValue
4454// CONTEXT_STORAGE_VARNAME-DAG: Decl[InstanceMethod]/CurrNominal: delegateOperation()[#Int#]; name=delegateOperation()
4555// CONTEXT_STORAGE_VARNAME-NOT: _
4656// CONTEXT_STORAGE_VARNAME: End completions
@@ -55,3 +65,34 @@ class MyClass {
5565// Same as CONTEXT_STORAGE_VARNAME.
5666 }
5767}
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