@@ -39,6 +39,8 @@ class UnsafeUse {
39
39
UnsafeConformance,
40
40
// / A reference to an unowned(unsafe) entity.
41
41
UnownedUnsafe,
42
+ // / A reference to an @exclusivity(unchecked) entity.
43
+ ExclusivityUnchecked,
42
44
// / A reference to a nonisolated(unsafe) entity.
43
45
NonisolatedUnsafe,
44
46
// / A reference to an unsafe declaration.
@@ -111,6 +113,7 @@ class UnsafeUse {
111
113
SourceLoc location
112
114
) {
113
115
assert (kind == UnownedUnsafe ||
116
+ kind == ExclusivityUnchecked ||
114
117
kind == NonisolatedUnsafe ||
115
118
kind == ReferenceToUnsafe ||
116
119
kind == ReferenceToUnsafeThroughTypealias ||
@@ -166,6 +169,12 @@ class UnsafeUse {
166
169
return forReference (UnownedUnsafe, dc, decl, Type (), location);
167
170
}
168
171
172
+ static UnsafeUse forExclusivityUnchecked (const Decl *decl,
173
+ SourceLoc location,
174
+ DeclContext *dc) {
175
+ return forReference (ExclusivityUnchecked, dc, decl, Type (), location);
176
+ }
177
+
169
178
static UnsafeUse forNonisolatedUnsafe (const Decl *decl,
170
179
SourceLoc location,
171
180
DeclContext *dc) {
@@ -215,6 +224,7 @@ class UnsafeUse {
215
224
(const char *)storage.typeWitness .location ));
216
225
217
226
case UnownedUnsafe:
227
+ case ExclusivityUnchecked:
218
228
case NonisolatedUnsafe:
219
229
case ReferenceToUnsafe:
220
230
case ReferenceToUnsafeThroughTypealias:
@@ -238,6 +248,7 @@ class UnsafeUse {
238
248
return storage.typeWitness .assocType ;
239
249
240
250
case UnownedUnsafe:
251
+ case ExclusivityUnchecked:
241
252
case NonisolatedUnsafe:
242
253
case ReferenceToUnsafe:
243
254
case ReferenceToUnsafeThroughTypealias:
@@ -262,6 +273,7 @@ class UnsafeUse {
262
273
DeclContext *getDeclContext () const {
263
274
switch (getKind ()) {
264
275
case UnownedUnsafe:
276
+ case ExclusivityUnchecked:
265
277
case NonisolatedUnsafe:
266
278
case ReferenceToUnsafe:
267
279
case ReferenceToUnsafeThroughTypealias:
@@ -294,6 +306,7 @@ class UnsafeUse {
294
306
295
307
case TypeWitness:
296
308
case UnownedUnsafe:
309
+ case ExclusivityUnchecked:
297
310
case NonisolatedUnsafe:
298
311
case ReferenceToUnsafe:
299
312
case ReferenceToUnsafeThroughTypealias:
@@ -319,6 +332,7 @@ class UnsafeUse {
319
332
return storage.typeWitness .type ;
320
333
321
334
case UnownedUnsafe:
335
+ case ExclusivityUnchecked:
322
336
case NonisolatedUnsafe:
323
337
case ReferenceToUnsafe:
324
338
case ReferenceToUnsafeThroughTypealias:
@@ -342,6 +356,7 @@ class UnsafeUse {
342
356
343
357
case Override:
344
358
case UnownedUnsafe:
359
+ case ExclusivityUnchecked:
345
360
case NonisolatedUnsafe:
346
361
case ReferenceToUnsafe:
347
362
case ReferenceToUnsafeThroughTypealias:
0 commit comments