1
1
// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=METATYPE_UNRESOLVED | %FileCheck %s -check-prefix=METATYPE_UNRESOLVED
2
+ // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=METATYPE_UNRESOLVED_BRACKET | %FileCheck %s -check-prefix=METATYPE_UNRESOLVED_BRACKET
2
3
// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=METATYPE_INT | %FileCheck %s -check-prefix=METATYPE_INT
4
+ // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=METATYPE_INT_BRACKET | %FileCheck %s -check-prefix=METATYPE_INT_BRACKET
3
5
// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=INSTANCE_INT | %FileCheck %s -check-prefix=INSTANCE_INT
6
+ // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=INSTANCE_INT_BRACKET | %FileCheck %s -check-prefix=INSTANCE_INT_BRACKET
4
7
// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=METATYPE_ARCHETYPE | %FileCheck %s -check-prefix=METATYPE_ARCHETYPE
8
+ // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=METATYPE_ARCHETYPE_BRACKET | %FileCheck %s -check-prefix=METATYPE_ARCHETYPE_BRACKET
5
9
// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=INSTANCE_ARCHETYPE | %FileCheck %s -check-prefix=INSTANCE_ARCHETYPE
10
+ // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=INSTANCE_ARCHETYPE_BRACKET | %FileCheck %s -check-prefix=INSTANCE_ARCHETYPE_BRACKET
6
11
// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=METATYPE_LABEL | %FileCheck %s -check-prefix=METATYPE_LABEL
7
- // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=INSTANCE_LABEL | %FileCheck %s -check-prefix=INSTANCE_LABEL
12
+ // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=INSTANCE_LABEL | %FileCheck %s -check-prefix=INSTANCE_LABEL
13
+ // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=SELF_IN_INSTANCEMETHOD | %FileCheck %s -check-prefix=SELF_IN_INSTANCEMETHOD
14
+ // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=SUPER_IN_INSTANCEMETHOD | %FileCheck %s -check-prefix=SUPER_IN_INSTANCEMETHOD
15
+ // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=SELF_IN_STATICMETHOD | %FileCheck %s -check-prefix=SELF_IN_STATICMETHOD
16
+ // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=SUPER_IN_STATICMETHOD | %FileCheck %s -check-prefix=SUPER_IN_STATICMETHOD
17
+
18
+ // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=LABELED_SUBSCRIPT | %FileCheck %s -check-prefix=LABELED_SUBSCRIPT
8
19
9
20
struct MyStruct < T> {
10
21
static subscript( x: Int , static defValue: T ) -> MyStruct < T > {
@@ -24,6 +35,10 @@ func test1() {
24
35
// METATYPE_UNRESOLVED-DAG: Keyword/CurrNominal: .Type[#MyStruct<_>.Type#];
25
36
// METATYPE_UNRESOLVED: End completions
26
37
38
+ let _ = MyStruct[ #^METATYPE_UNRESOLVED_BRACKET^#
39
+ // METATYPE_UNRESOLVED_BRACKET: Begin completions
40
+ // METATYPE_UNRESOLVED_BRACKET-DAG: Decl[Subscript]/CurrNominal: ['[']{#(x): Int#}, {#static: _#}[']'][#MyStruct<_>#];
41
+ // METATYPE_UNRESOLVED_BRACKET: End completions
27
42
28
43
let _ = MyStruct < Int > #^METATYPE_INT^#
29
44
// METATYPE_INT: Begin completions, 4 items
@@ -33,12 +48,21 @@ func test1() {
33
48
// METATYPE_INT-DAG: Keyword/CurrNominal: .Type[#MyStruct<Int>.Type#];
34
49
// METATYPE_INT: End completions
35
50
51
+ let _ = MyStruct< Int> [ #^METATYPE_INT_BRACKET^#
52
+ // METATYPE_INT_BRACKET: Begin completions
53
+ // METATYPE_INT_BRACKET-DAG: Decl[Subscript]/CurrNominal: ['[']{#(x): Int#}, {#static: Int#}[']'][#MyStruct<Int>#];
54
+ // METATYPE_INT_BRACKET: End completions
55
+
36
56
let _ = MyStruct < Int > ( ) #^INSTANCE_INT^#
37
57
// INSTANCE_INT: Begin completions, 2 items
38
58
// INSTANCE_INT-DAG: Decl[Subscript]/CurrNominal: [{#(x): Int#}, {#instance: Int#}][#Int#];
39
59
// INSTANCE_INT-DAG: Keyword[self]/CurrNominal: .self[#MyStruct<Int>#];
40
60
// INSTANCE_INT: End completions
41
61
62
+ let _ = MyStruct < Int > ( ) [ #^INSTANCE_INT_BRACKET^#
63
+ // INSTANCE_INT_BRACKET: Begin completions
64
+ // INSTANCE_INT_BRACKET-DAG: Decl[Subscript]/CurrNominal: ['[']{#(x): Int#}, {#instance: Int#}[']'][#Int#];
65
+ // INSTANCE_INT_BRACKET: End completions
42
66
}
43
67
func test2< U> ( value: MyStruct < U > ) {
44
68
let _ = MyStruct < U > #^METATYPE_ARCHETYPE^#
@@ -49,12 +73,22 @@ func test2<U>(value: MyStruct<U>) {
49
73
// METATYPE_ARCHETYPE-DAG: Keyword/CurrNominal: .Type[#MyStruct<U>.Type#];
50
74
// METATYPE_ARCHETYPE: End completions
51
75
76
+ let _ = MyStruct< U> [ #^METATYPE_ARCHETYPE_BRACKET^#
77
+ // METATYPE_ARCHETYPE_BRACKET: Begin completions
78
+ // METATYPE_ARCHETYPE_BRACKET-DAG: Decl[Subscript]/CurrNominal: ['[']{#(x): Int#}, {#static: U#}[']'][#MyStruct<U>#];
79
+ // METATYPE_ARCHETYPE_BRACKET: End completions
80
+
52
81
let _ = value #^INSTANCE_ARCHETYPE^#
53
82
// INSTANCE_ARCHETYPE: Begin completions, 2 items
54
83
// INSTANCE_ARCHETYPE-DAG: Decl[Subscript]/CurrNominal: [{#(x): Int#}, {#instance: U#}][#Int#];
55
84
// INSTANCE_ARCHETYPE-DAG: Keyword[self]/CurrNominal: .self[#MyStruct<U>#];
56
85
// INSTANCE_ARCHETYPE: End completions
57
86
87
+ let _ = value[ #^INSTANCE_ARCHETYPE_BRACKET^#
88
+ // INSTANCE_ARCHETYPE_BRACKET: Begin completions
89
+ // INSTANCE_ARCHETYPE_BRACKET-DAG: Decl[Subscript]/CurrNominal: ['[']{#(x): Int#}, {#instance: U#}[']'][#Int#];
90
+ // INSTANCE_ARCHETYPE_BRACKET: End completions
91
+
58
92
let _ = MyStruct< U> [ 42 , #^METATYPE_LABEL^#
59
93
// METATYPE_LABEL: Begin completions, 1 items
60
94
// METATYPE_LABEL-DAG: Keyword/ExprSpecific: static: [#Argument name#];
@@ -65,3 +99,48 @@ func test2<U>(value: MyStruct<U>) {
65
99
// INSTANCE_LABEL-DAG: Keyword/ExprSpecific: instance: [#Argument name#];
66
100
// INSTANCE_LABEL: End completions
67
101
}
102
+
103
+ class Base {
104
+ static subscript( static x: Int ) -> Int { return 1 }
105
+ subscript( instance x: Int ) -> Int { return 1 }
106
+ }
107
+ class Derived : Base {
108
+ static subscript( derivedStatic x: Int ) -> Int { return 1 }
109
+ subscript( derivedInstance x: Int ) -> Int { return 1 }
110
+
111
+ func testInstance( ) {
112
+ let _ = self [ #^SELF_IN_INSTANCEMETHOD^#]
113
+ // SELF_IN_INSTANCEMETHOD: Begin completions, 2 items
114
+ // SELF_IN_INSTANCEMETHOD-DAG: Decl[Subscript]/CurrNominal: ['[']{#derivedInstance: Int#}[']'][#Int#];
115
+ // SELF_IN_INSTANCEMETHOD-DAG: Decl[Subscript]/CurrNominal: ['[']{#instance: Int#}[']'][#Int#];
116
+ // SELF_IN_INSTANCEMETHOD: End completions
117
+
118
+ let _ = super[ #^SUPER_IN_INSTANCEMETHOD^#]
119
+ // SUPER_IN_INSTANCEMETHOD: Begin completions, 1 items
120
+ // SUPER_IN_INSTANCEMETHOD-DAG: Decl[Subscript]/CurrNominal: ['[']{#instance: Int#}[']'][#Int#];
121
+ // SUPER_IN_INSTANCEMETHOD: End completions
122
+ }
123
+
124
+ static func testStatic( ) {
125
+ let _ = self [ #^SELF_IN_STATICMETHOD^#]
126
+ // SELF_IN_STATICMETHOD: Begin completions, 2 items
127
+ // SELF_IN_STATICMETHOD-DAG: Decl[Subscript]/CurrNominal: ['[']{#derivedStatic: Int#}[']'][#Int#];
128
+ // SELF_IN_STATICMETHOD-DAG: Decl[Subscript]/CurrNominal: ['[']{#static: Int#}[']'][#Int#];
129
+ // SELF_IN_STATICMETHOD: End completions
130
+
131
+ let _ = super[ #^SUPER_IN_STATICMETHOD^#]
132
+ // SUPER_IN_STATICMETHOD: Begin completions, 1 items
133
+ // SUPER_IN_STATICMETHOD-DAG: Decl[Subscript]/CurrNominal: ['[']{#static: Int#}[']'][#Int#];
134
+ // SUPER_IN_STATICMETHOD: End completions
135
+ }
136
+ }
137
+
138
+ struct MyStruct1 < X: Comparable > {
139
+ subscript( idx1 _: Int , idx2 _: X ) -> Int ! { return 1 }
140
+ }
141
+ func testSubscriptCallSig< T> ( val: MyStruct1 < T > ) {
142
+ val[ #^LABELED_SUBSCRIPT^#
143
+ // LABELED_SUBSCRIPT: Begin completions, 1 items
144
+ // LABELED_SUBSCRIPT: Decl[Subscript]/CurrNominal: ['[']{#idx1: Int#}, {#idx2: Comparable#}[']'][#Int!#];
145
+ // LABELED_SUBSCRIPT: End completions
146
+ }
0 commit comments