@@ -39,6 +39,8 @@ class UnsafeUse {
3939 UnsafeConformance,
4040 // / A reference to an unowned(unsafe) entity.
4141 UnownedUnsafe,
42+ // / A reference to an @exclusivity(unchecked) entity.
43+ ExclusivityUnchecked,
4244 // / A reference to a nonisolated(unsafe) entity.
4345 NonisolatedUnsafe,
4446 // / A reference to an unsafe declaration.
@@ -111,6 +113,7 @@ class UnsafeUse {
111113 SourceLoc location
112114 ) {
113115 assert (kind == UnownedUnsafe ||
116+ kind == ExclusivityUnchecked ||
114117 kind == NonisolatedUnsafe ||
115118 kind == ReferenceToUnsafe ||
116119 kind == ReferenceToUnsafeThroughTypealias ||
@@ -166,6 +169,12 @@ class UnsafeUse {
166169 return forReference (UnownedUnsafe, dc, decl, Type (), location);
167170 }
168171
172+ static UnsafeUse forExclusivityUnchecked (const Decl *decl,
173+ SourceLoc location,
174+ DeclContext *dc) {
175+ return forReference (ExclusivityUnchecked, dc, decl, Type (), location);
176+ }
177+
169178 static UnsafeUse forNonisolatedUnsafe (const Decl *decl,
170179 SourceLoc location,
171180 DeclContext *dc) {
@@ -215,6 +224,7 @@ class UnsafeUse {
215224 (const char *)storage.typeWitness .location ));
216225
217226 case UnownedUnsafe:
227+ case ExclusivityUnchecked:
218228 case NonisolatedUnsafe:
219229 case ReferenceToUnsafe:
220230 case ReferenceToUnsafeThroughTypealias:
@@ -238,6 +248,7 @@ class UnsafeUse {
238248 return storage.typeWitness .assocType ;
239249
240250 case UnownedUnsafe:
251+ case ExclusivityUnchecked:
241252 case NonisolatedUnsafe:
242253 case ReferenceToUnsafe:
243254 case ReferenceToUnsafeThroughTypealias:
@@ -262,6 +273,7 @@ class UnsafeUse {
262273 DeclContext *getDeclContext () const {
263274 switch (getKind ()) {
264275 case UnownedUnsafe:
276+ case ExclusivityUnchecked:
265277 case NonisolatedUnsafe:
266278 case ReferenceToUnsafe:
267279 case ReferenceToUnsafeThroughTypealias:
@@ -294,6 +306,7 @@ class UnsafeUse {
294306
295307 case TypeWitness:
296308 case UnownedUnsafe:
309+ case ExclusivityUnchecked:
297310 case NonisolatedUnsafe:
298311 case ReferenceToUnsafe:
299312 case ReferenceToUnsafeThroughTypealias:
@@ -319,6 +332,7 @@ class UnsafeUse {
319332 return storage.typeWitness .type ;
320333
321334 case UnownedUnsafe:
335+ case ExclusivityUnchecked:
322336 case NonisolatedUnsafe:
323337 case ReferenceToUnsafe:
324338 case ReferenceToUnsafeThroughTypealias:
@@ -342,6 +356,7 @@ class UnsafeUse {
342356
343357 case Override:
344358 case UnownedUnsafe:
359+ case ExclusivityUnchecked:
345360 case NonisolatedUnsafe:
346361 case ReferenceToUnsafe:
347362 case ReferenceToUnsafeThroughTypealias:
0 commit comments