19
19
// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=KEYWORD_INDEPENDENT_2 | %FileCheck %s -check-prefix=KEYWORD_LAST
20
20
// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=KEYWORD_LAST | %FileCheck %s -check-prefix=KEYWORD_LAST
21
21
22
+ // NOTE: If you want to test code completion for an experimental feature, please
23
+ // put your tests in complete_decl_attribute_feature_requirement.swift, not
24
+ // here. That file has the infrastructure to test that completions are not
25
+ // offered when the feature is disabled.
26
+
22
27
struct MyStruct { }
23
28
24
29
@propertyWrapper
@@ -112,6 +117,7 @@ actor MyGenericGlobalActor<T> {
112
117
// KEYWORD2-NEXT: Keyword/None: preconcurrency[#Func Attribute#]; name=preconcurrency
113
118
// KEYWORD2-NEXT: Keyword/None: backDeployed[#Func Attribute#]; name=backDeployed
114
119
// KEYWORD2-NEXT: Keyword/None: lifetime[#Func Attribute#]; name=lifetime
120
+ // KEYWORD2-NEXT: Keyword/None: abi[#Func Attribute#]; name=abi{{$}}
115
121
// KEYWORD2-NEXT: Keyword/None: concurrent[#Func Attribute#]; name=concurrent
116
122
// KEYWORD2-NOT: Keyword
117
123
// KEYWORD2-DAG: Decl[Struct]/CurrModule: MyStruct[#MyStruct#]; name=MyStruct
@@ -169,6 +175,7 @@ actor MyGenericGlobalActor<T> {
169
175
// KEYWORD5-NEXT: Keyword/None: preconcurrency[#Struct Attribute#]; name=preconcurrency
170
176
171
177
@#^ON_GLOBALVAR^# var globalVar
178
+ // ON_GLOBALVAR-DAG: Keyword/None: abi[#Var Attribute#]; name=abi
172
179
// ON_GLOBALVAR-DAG: Keyword/None: available[#Var Attribute#]; name=available
173
180
// ON_GLOBALVAR-DAG: Keyword/None: objc[#Var Attribute#]; name=objc
174
181
// ON_GLOBALVAR-DAG: Keyword/None: NSCopying[#Var Attribute#]; name=NSCopying
@@ -197,6 +204,7 @@ actor MyGenericGlobalActor<T> {
197
204
198
205
struct _S {
199
206
@#^ON_INIT^# init( )
207
+ // ON_INIT-DAG: Keyword/None: abi[#Constructor Attribute#]; name=abi
200
208
// ON_INIT-DAG: Keyword/None: available[#Constructor Attribute#]; name=available
201
209
// ON_INIT-DAG: Keyword/None: objc[#Constructor Attribute#]; name=objc
202
210
// ON_INIT-DAG: Keyword/None: inline[#Constructor Attribute#]; name=inline
@@ -207,6 +215,7 @@ struct _S {
207
215
// ON_INIT-DAG: Keyword/None: preconcurrency[#Constructor Attribute#]; name=preconcurrency
208
216
209
217
@#^ON_PROPERTY^# var foo
218
+ // ON_PROPERTY-DAG: Keyword/None: abi[#Var Attribute#]; name=abi
210
219
// ON_PROPERTY-DAG: Keyword/None: available[#Var Attribute#]; name=available
211
220
// ON_PROPERTY-DAG: Keyword/None: objc[#Var Attribute#]; name=objc
212
221
// ON_PROPERTY-DAG: Keyword/None: NSCopying[#Var Attribute#]; name=NSCopying
@@ -234,8 +243,12 @@ struct _S {
234
243
// ON_PROPERTY-DAG: Decl[Actor]/CurrModule/TypeRelation[Convertible]: MyGenericGlobalActor[#Global Actor#]; name=MyGenericGlobalActor
235
244
// ON_PROPERTY-NOT: Decl[PrecedenceGroup]
236
245
246
+ @#^ON_SUBSCR^# subscript
247
+ // ON_SUBSCR-DAG: Keyword/None: abi[#Declaration Attribute#]; name=abi
248
+
237
249
@#^ON_METHOD^# private
238
250
func foo( )
251
+ // ON_METHOD-DAG: Keyword/None: abi[#Func Attribute#]; name=abi
239
252
// ON_METHOD-DAG: Keyword/None: available[#Func Attribute#]; name=available
240
253
// ON_METHOD-DAG: Keyword/None: objc[#Func Attribute#]; name=objc
241
254
// ON_METHOD-DAG: Keyword/None: IBAction[#Func Attribute#]; name=IBAction
@@ -293,6 +306,7 @@ struct _S {
293
306
294
307
295
308
@#^ON_MEMBER_LAST^#
309
+ // ON_MEMBER_LAST-DAG: Keyword/None: abi[#Declaration Attribute#]; name=abi
296
310
// ON_MEMBER_LAST-DAG: Keyword/None: available[#Declaration Attribute#]; name=available
297
311
// ON_MEMBER_LAST-DAG: Keyword/None: objc[#Declaration Attribute#]; name=objc
298
312
// ON_MEMBER_LAST-DAG: Keyword/None: dynamicCallable[#Declaration Attribute#]; name=dynamicCallable
@@ -347,6 +361,8 @@ func takeClosure(_: () -> Void) {
347
361
print ( " x " )
348
362
}
349
363
}
364
+ // FIXME: Not valid in this position (but CompletionLookup can't tell that)
365
+ // IN_CLOSURE-DAG: Keyword/None: abi[#Declaration Attribute#]; name=abi
350
366
// FIXME: We should mark MyPropertyWrapper and MyResultBuilder as Unrelated
351
367
// IN_CLOSURE-DAG: Decl[Struct]/CurrModule: MyStruct[#MyStruct#]; name=MyStruct
352
368
// IN_CLOSURE-DAG: Decl[Struct]/CurrModule/TypeRelation[Convertible]: MyPropertyWrapper[#Property Wrapper#]; name=MyPropertyWrapper
@@ -365,6 +381,7 @@ func dummy2() {}
365
381
366
382
@#^KEYWORD_LAST^#
367
383
384
+ // KEYWORD_LAST-DAG: Keyword/None: abi[#Declaration Attribute#]; name=abi
368
385
// KEYWORD_LAST-DAG: Keyword/None: available[#Declaration Attribute#]; name=available{{$}}
369
386
// KEYWORD_LAST-DAG: Keyword/None: freestanding[#Declaration Attribute#]; name=freestanding{{$}}
370
387
// KEYWORD_LAST-DAG: Keyword/None: objc[#Declaration Attribute#]; name=objc{{$}}
0 commit comments