|
| 1 | +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=CONTEXT | %FileCheck %s -check-prefix=CONTEXT |
| 2 | +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=CONTEXT_VARNAME | %FileCheck %s -check-prefix=CONTEXT_VARNAME |
| 3 | +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=CONTEXT_DOLLAR_VARNAME | %FileCheck %s -check-prefix=CONTEXT_DOLLAR_VARNAME |
| 4 | + |
| 5 | +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=SELF | %FileCheck %s -check-prefix=CONTEXT |
| 6 | +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=SELF_VARNAME | %FileCheck %s -check-prefix=CONTEXT_VARNAME |
| 7 | +// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=SELF_DOLLAR_VARNAME | %FileCheck %s -check-prefix=CONTEXT_DOLLAR_VARNAME |
| 8 | + |
| 9 | +@_propertyWrapper |
| 10 | +struct Lazzzy<T> { |
| 11 | + var value: T |
| 12 | + |
| 13 | + init(initialValue: T) { value = initialValue } |
| 14 | + func delegateOperation() -> Int {} |
| 15 | +} |
| 16 | + |
| 17 | +struct MyMember { |
| 18 | + var x: Int |
| 19 | + var y: Int |
| 20 | + static var zero = MyMember(x: 0, y: 0) |
| 21 | +} |
| 22 | + |
| 23 | +class MyClass { |
| 24 | + @Lazzzy<MyMember> |
| 25 | + var foo = .zero |
| 26 | + |
| 27 | + func test() { |
| 28 | + let _ = #^CONTEXT^# |
| 29 | +// CONTEXT: Begin completions |
| 30 | +// CONTEXT-DAG: Decl[InstanceVar]/CurrNominal: foo[#MyMember#]; |
| 31 | +// CONTEXT-DAG: Decl[InstanceVar]/CurrNominal: $foo[#Lazzzy<MyMember>#]; |
| 32 | +// CONTEXT-NOT: $_ |
| 33 | +// CONTEXT: End completions |
| 34 | + |
| 35 | + let _ = foo.#^CONTEXT_VARNAME^# |
| 36 | +// CONTEXT_VARNAME: Begin completions, 3 items |
| 37 | +// CONTEXT_VARNAME-DAG: Keyword[self]/CurrNominal: self[#MyMember#]; name=self |
| 38 | +// CONTEXT_VARNAME-DAG: Decl[InstanceVar]/CurrNominal: x[#Int#]; name=x |
| 39 | +// CONTEXT_VARNAME-DAG: Decl[InstanceVar]/CurrNominal: y[#Int#]; name=y |
| 40 | +// CONTEXT_VARNAME-NOT: $_ |
| 41 | +// CONTEXT_VARNAME-DAG: End completions |
| 42 | + |
| 43 | + let _ = $foo.#^CONTEXT_DOLLAR_VARNAME^# |
| 44 | +// CONTEXT_DOLLAR_VARNAME: Begin completions, 3 items |
| 45 | +// CONTEXT_DOLLAR_VARNAME-DAG: Keyword[self]/CurrNominal: self[#Lazzzy<MyMember>#]; name=self |
| 46 | +// CONTEXT_DOLLAR_VARNAME-DAG: Decl[InstanceVar]/CurrNominal: value[#MyMember#]; name=value |
| 47 | +// CONTEXT_DOLLAR_VARNAME-DAG: Decl[InstanceMethod]/CurrNominal: delegateOperation()[#Int#]; name=delegateOperation() |
| 48 | +// CONTEXT_DOLLAR_VARNAME-NOT: $_ |
| 49 | +// CONTEXT_DOLLAR_VARNAME: End completions |
| 50 | + |
| 51 | + let _ = self.#^SELF^# |
| 52 | +// Same as CONTEXT. |
| 53 | + |
| 54 | + let _ = self.foo.#^SELF_VARNAME^# |
| 55 | +// Same as CONTEXT_VARNAME. |
| 56 | + |
| 57 | + let _ = self.$foo.#^SELF_DOLLAR_VARNAME^# |
| 58 | +// Same as CONTEXT_DOLLAR_VARNAME. |
| 59 | + } |
| 60 | +} |
0 commit comments