18
18
#define DECL_ATTR (SPELLING, CLASS, OPTIONS, CODE )
19
19
#endif
20
20
21
+ #ifndef CONTEXTUAL_DECL_ATTR
22
+ #define CONTEXTUAL_DECL_ATTR (SPELLING, CLASS, OPTIONS, CODE ) \
23
+ DECL_ATTR (SPELLING, CLASS, OPTIONS, CODE)
24
+ #endif
25
+
21
26
#ifndef SIMPLE_DECL_ATTR
22
- #define SIMPLE_DECL_ATTR (X, CLASS, OPTIONS, CODE ) DECL_ATTR(X, CLASS, OPTIONS, CODE)
27
+ #define SIMPLE_DECL_ATTR (X, CLASS, OPTIONS, CODE ) \
28
+ DECL_ATTR (X, CLASS, OPTIONS, CODE)
29
+ #endif
30
+
31
+ #ifndef CONTEXTUAL_SIMPLE_DECL_ATTR
32
+ #define CONTEXTUAL_SIMPLE_DECL_ATTR (X, CLASS, OPTIONS, CODE ) \
33
+ SIMPLE_DECL_ATTR (X, CLASS, OPTIONS, CODE)
23
34
#endif
24
35
25
36
#ifndef DECL_ATTR_ALIAS
26
37
#define DECL_ATTR_ALIAS (SPELLING, CLASS )
27
38
#endif
28
39
40
+ #ifndef CONTEXTUAL_DECL_ATTR_ALIAS
41
+ #define CONTEXTUAL_DECL_ATTR_ALIAS (SPELLING, CLASS ) \
42
+ DECL_ATTR_ALIAS (SPELLING, CLASS)
43
+ #endif
44
+
29
45
#ifndef TYPE_ATTR
30
46
#define TYPE_ATTR (X )
31
47
#endif
@@ -92,18 +108,21 @@ DECL_ATTR(available, Available,
92
108
OnConstructor | OnDestructor | OnTypeAlias | OnSubscript |
93
109
OnEnumElement | OnExtension | AllowMultipleAttributes | LongAttribute, 1 )
94
110
95
- SIMPLE_DECL_ATTR(final , Final,
96
- OnClass | OnFunc | OnVar | OnSubscript|DeclModifier, 2 )
111
+ CONTEXTUAL_SIMPLE_DECL_ATTR(final , Final, DeclModifier |
112
+ OnClass | OnFunc | OnVar | OnSubscript,
113
+ 2 )
97
114
98
115
DECL_ATTR(objc, ObjC,
99
116
OnFunc | OnClass | OnProtocol | OnExtension | OnVar | OnSubscript |
100
117
OnConstructor | OnDestructor | OnEnum | OnEnumElement, 3 )
101
118
102
- SIMPLE_DECL_ATTR(required, Required,
103
- OnConstructor|DeclModifier, 4 )
119
+ CONTEXTUAL_SIMPLE_DECL_ATTR(required, Required, DeclModifier |
120
+ OnConstructor,
121
+ 4 )
104
122
105
- SIMPLE_DECL_ATTR(optional, Optional,
106
- OnConstructor|OnFunc|OnVar|OnSubscript|DeclModifier, 5 )
123
+ CONTEXTUAL_SIMPLE_DECL_ATTR(optional, Optional, DeclModifier |
124
+ OnConstructor | OnFunc | OnVar | OnSubscript,
125
+ 5 )
107
126
108
127
// / NOTE: 6 is unused
109
128
@@ -131,7 +150,9 @@ SIMPLE_DECL_ATTR(IBOutlet, IBOutlet,
131
150
132
151
SIMPLE_DECL_ATTR(NSManaged, NSManaged, OnVar | OnFunc, 15 )
133
152
134
- SIMPLE_DECL_ATTR(lazy, Lazy, OnVar|DeclModifier, 16 )
153
+ CONTEXTUAL_SIMPLE_DECL_ATTR(lazy, Lazy, DeclModifier |
154
+ OnVar,
155
+ 16 )
135
156
136
157
SIMPLE_DECL_ATTR(LLDBDebuggerFunction, LLDBDebuggerFunction, OnFunc |
137
158
UserInaccessible, 17 )
@@ -148,12 +169,21 @@ DECL_ATTR(_semantics, Semantics,
148
169
OnFunc | OnConstructor | OnDestructor | OnSubscript |
149
170
AllowMultipleAttributes | UserInaccessible, 21 )
150
171
151
- SIMPLE_DECL_ATTR(dynamic, Dynamic,
152
- OnFunc | OnVar | OnSubscript | OnConstructor | DeclModifier, 22 )
172
+ CONTEXTUAL_SIMPLE_DECL_ATTR(dynamic, Dynamic, DeclModifier |
173
+ OnFunc | OnVar | OnSubscript | OnConstructor,
174
+ 22 )
153
175
154
- SIMPLE_DECL_ATTR(infix , Infix , OnFunc | OnOperator | DeclModifier, 23 )
155
- SIMPLE_DECL_ATTR(prefix , Prefix , OnFunc | OnOperator | DeclModifier, 24 )
156
- SIMPLE_DECL_ATTR(postfix, Postfix, OnFunc | OnOperator | DeclModifier, 25 )
176
+ CONTEXTUAL_SIMPLE_DECL_ATTR(infix, Infix, DeclModifier |
177
+ OnFunc | OnOperator,
178
+ 23 )
179
+
180
+ CONTEXTUAL_SIMPLE_DECL_ATTR(prefix, Prefix, DeclModifier |
181
+ OnFunc | OnOperator,
182
+ 24 )
183
+
184
+ CONTEXTUAL_SIMPLE_DECL_ATTR(postfix, Postfix, DeclModifier |
185
+ OnFunc | OnOperator,
186
+ 25 )
157
187
158
188
SIMPLE_DECL_ATTR(_transparent, Transparent,
159
189
OnFunc|OnConstructor|OnVar|UserInaccessible, 26 )
@@ -176,22 +206,24 @@ DECL_ATTR(_specialize, Specialize,
176
206
177
207
SIMPLE_DECL_ATTR(objcMembers, ObjCMembers, OnClass, 34 )
178
208
179
- // Non-serialized attributes.
209
+ CONTEXTUAL_SIMPLE_DECL_ATTR(__consuming, Consuming, DeclModifier |
210
+ OnFunc |
211
+ NotSerialized, 40 )
212
+
213
+ CONTEXTUAL_SIMPLE_DECL_ATTR(mutating, Mutating, DeclModifier |
214
+ OnFunc |
215
+ NotSerialized, 41 )
180
216
181
- SIMPLE_DECL_ATTR(__consuming, Consuming, OnFunc | DeclModifier | NotSerialized,
182
- /* Not serialized */ 40 )
183
- SIMPLE_DECL_ATTR(mutating, Mutating, OnFunc | DeclModifier | NotSerialized,
184
- /* Not serialized */ 41 )
185
- SIMPLE_DECL_ATTR(nonmutating, NonMutating, OnFunc | DeclModifier | NotSerialized,
186
- /* Not serialized */ 42 )
217
+ CONTEXTUAL_SIMPLE_DECL_ATTR(nonmutating, NonMutating, DeclModifier |
218
+ OnFunc |
219
+ NotSerialized, 42 )
187
220
188
- SIMPLE_DECL_ATTR (convenience, Convenience,
189
- OnConstructor| DeclModifier| NotSerialized, 43 )
221
+ CONTEXTUAL_SIMPLE_DECL_ATTR (convenience, Convenience,
222
+ OnConstructor | DeclModifier | NotSerialized, 43 )
190
223
191
- SIMPLE_DECL_ATTR(override , Override,
192
- OnFunc | OnVar | OnSubscript | OnConstructor | DeclModifier |
193
- NotSerialized,
194
- /* Not serialized */ 44 )
224
+ CONTEXTUAL_SIMPLE_DECL_ATTR(override , Override, DeclModifier |
225
+ OnFunc | OnVar | OnSubscript | OnConstructor |
226
+ NotSerialized, 44 )
195
227
196
228
SIMPLE_DECL_ATTR(sil_stored, SILStored, OnVar | NotSerialized | SILOnly,
197
229
/* Not serialized */ 45 )
@@ -204,7 +236,7 @@ DECL_ATTR(private, AccessControl,
204
236
DECL_ATTR_ALIAS(fileprivate, AccessControl)
205
237
DECL_ATTR_ALIAS(internal, AccessControl)
206
238
DECL_ATTR_ALIAS(public, AccessControl)
207
-
239
+ CONTEXTUAL_DECL_ATTR_ALIAS(open, AccessControl)
208
240
209
241
DECL_ATTR(__setter_access, SetterAccess,
210
242
OnVar | OnSubscript | DeclModifier | NotSerialized | RejectByParser,
@@ -214,9 +246,11 @@ DECL_ATTR(__raw_doc_comment, RawDocComment, OnAnyDecl |
214
246
NotSerialized | RejectByParser, /* Not serialized */ 48 )
215
247
216
248
// Also handles unowned and unowned(weak).
217
- DECL_ATTR(weak, ReferenceOwnership, OnVar | OnParam | DeclModifier | NotSerialized,
218
- /* Not serialized */ 49 )
219
- DECL_ATTR_ALIAS(unowned, ReferenceOwnership)
249
+ CONTEXTUAL_DECL_ATTR(weak, ReferenceOwnership, DeclModifier |
250
+ OnVar | OnParam |
251
+ NotSerialized, 49 )
252
+
253
+ CONTEXTUAL_DECL_ATTR_ALIAS(unowned, ReferenceOwnership)
220
254
221
255
DECL_ATTR(effects, Effects, OnFunc | OnConstructor | OnDestructor |
222
256
UserInaccessible, 50 )
@@ -246,9 +280,9 @@ SIMPLE_DECL_ATTR(rethrows, Rethrows,
246
280
DECL_ATTR(_swift_native_objc_runtime_base, SwiftNativeObjCRuntimeBase,
247
281
OnClass | UserInaccessible, 59 )
248
282
249
- SIMPLE_DECL_ATTR (indirect, Indirect,
250
- OnEnum | OnEnumElement | DeclModifier ,
251
- 60 )
283
+ CONTEXTUAL_SIMPLE_DECL_ATTR (indirect, Indirect, DeclModifier |
284
+ OnEnum | OnEnumElement ,
285
+ 60 )
252
286
253
287
SIMPLE_DECL_ATTR(warn_unqualified_access, WarnUnqualifiedAccess,
254
288
OnFunc /* | OnVar*/ | LongAttribute, 61 )
@@ -316,5 +350,8 @@ SIMPLE_DECL_ATTR(_frozen, Frozen, OnEnum | UserInaccessible, 76)
316
350
317
351
#undef TYPE_ATTR
318
352
#undef DECL_ATTR_ALIAS
353
+ #undef CONTEXTUAL_DECL_ATTR_ALIAS
319
354
#undef SIMPLE_DECL_ATTR
355
+ #undef CONTEXTUAL_SIMPLE_DECL_ATTR
320
356
#undef DECL_ATTR
357
+ #undef CONTEXTUAL_DECL_ATTR
0 commit comments