@@ -55,7 +55,9 @@ final class AssociatedObjectTests: XCTestCase {
55
55
}
56
56
57
57
@inline(never) static var __associated_stringKey: UnsafeRawPointer {
58
- _associated_object_key()
58
+ let f: @convention(c) () -> Void = {
59
+ }
60
+ return unsafeBitCast(f, to: UnsafeRawPointer.self)
59
61
}
60
62
"""
61
63
}
@@ -98,7 +100,9 @@ final class AssociatedObjectTests: XCTestCase {
98
100
}
99
101
100
102
@inline(never) static var __associated_intKey: UnsafeRawPointer {
101
- _associated_object_key()
103
+ let f: @convention(c) () -> Void = {
104
+ }
105
+ return unsafeBitCast(f, to: UnsafeRawPointer.self)
102
106
}
103
107
"""
104
108
}
@@ -141,7 +145,9 @@ final class AssociatedObjectTests: XCTestCase {
141
145
}
142
146
143
147
@inline(never) static var __associated_floatKey: UnsafeRawPointer {
144
- _associated_object_key()
148
+ let f: @convention(c) () -> Void = {
149
+ }
150
+ return unsafeBitCast(f, to: UnsafeRawPointer.self)
145
151
}
146
152
"""
147
153
}
@@ -184,7 +190,9 @@ final class AssociatedObjectTests: XCTestCase {
184
190
}
185
191
186
192
@inline(never) static var __associated_doubleKey: UnsafeRawPointer {
187
- _associated_object_key()
193
+ let f: @convention(c) () -> Void = {
194
+ }
195
+ return unsafeBitCast(f, to: UnsafeRawPointer.self)
188
196
}
189
197
"""
190
198
}
@@ -227,7 +235,9 @@ final class AssociatedObjectTests: XCTestCase {
227
235
}
228
236
229
237
@inline(never) static var __associated_stringKey: UnsafeRawPointer {
230
- _associated_object_key()
238
+ let f: @convention(c) () -> Void = {
239
+ }
240
+ return unsafeBitCast(f, to: UnsafeRawPointer.self)
231
241
}
232
242
"""
233
243
}
@@ -260,7 +270,9 @@ final class AssociatedObjectTests: XCTestCase {
260
270
}
261
271
262
272
@inline(never) static var __associated_stringKey: UnsafeRawPointer {
263
- _associated_object_key()
273
+ let f: @convention(c) () -> Void = {
274
+ }
275
+ return unsafeBitCast(f, to: UnsafeRawPointer.self)
264
276
}
265
277
"""
266
278
}
@@ -293,7 +305,9 @@ final class AssociatedObjectTests: XCTestCase {
293
305
}
294
306
295
307
@inline(never) static var __associated_stringKey: UnsafeRawPointer {
296
- _associated_object_key()
308
+ let f: @convention(c) () -> Void = {
309
+ }
310
+ return unsafeBitCast(f, to: UnsafeRawPointer.self)
297
311
}
298
312
"""
299
313
}
@@ -326,7 +340,9 @@ final class AssociatedObjectTests: XCTestCase {
326
340
}
327
341
328
342
@inline(never) static var __associated_stringKey: UnsafeRawPointer {
329
- _associated_object_key()
343
+ let f: @convention(c) () -> Void = {
344
+ }
345
+ return unsafeBitCast(f, to: UnsafeRawPointer.self)
330
346
}
331
347
"""
332
348
}
@@ -370,13 +386,17 @@ final class AssociatedObjectTests: XCTestCase {
370
386
}
371
387
372
388
@inline(never) static var __associated_stringKey: UnsafeRawPointer {
373
- _associated_object_key()
389
+ let f: @convention(c) () -> Void = {
390
+ }
391
+ return unsafeBitCast(f, to: UnsafeRawPointer.self)
374
392
}
375
393
376
394
@_AssociatedObject(.retain(.nonatomic)) var __associated_stringIsSet: Bool = false
377
395
378
396
@inline(never) static var __associated___associated_stringIsSetKey: UnsafeRawPointer {
379
- _associated_object_key()
397
+ let f: @convention(c) () -> Void = {
398
+ }
399
+ return unsafeBitCast(f, to: UnsafeRawPointer.self)
380
400
}
381
401
"""
382
402
}
@@ -419,7 +439,9 @@ final class AssociatedObjectTests: XCTestCase {
419
439
}
420
440
421
441
@inline(never) static var __associated_boolKey: UnsafeRawPointer {
422
- _associated_object_key()
442
+ let f: @convention(c) () -> Void = {
443
+ }
444
+ return unsafeBitCast(f, to: UnsafeRawPointer.self)
423
445
}
424
446
"""
425
447
}
@@ -462,7 +484,9 @@ final class AssociatedObjectTests: XCTestCase {
462
484
}
463
485
464
486
@inline(never) static var __associated_intArrayKey: UnsafeRawPointer {
465
- _associated_object_key()
487
+ let f: @convention(c) () -> Void = {
488
+ }
489
+ return unsafeBitCast(f, to: UnsafeRawPointer.self)
466
490
}
467
491
"""
468
492
}
@@ -495,7 +519,9 @@ final class AssociatedObjectTests: XCTestCase {
495
519
}
496
520
497
521
@inline(never) static var __associated_boolKey: UnsafeRawPointer {
498
- _associated_object_key()
522
+ let f: @convention(c) () -> Void = {
523
+ }
524
+ return unsafeBitCast(f, to: UnsafeRawPointer.self)
499
525
}
500
526
"""
501
527
}
@@ -538,7 +564,9 @@ final class AssociatedObjectTests: XCTestCase {
538
564
}
539
565
540
566
@inline(never) static var __associated_dicKey: UnsafeRawPointer {
541
- _associated_object_key()
567
+ let f: @convention(c) () -> Void = {
568
+ }
569
+ return unsafeBitCast(f, to: UnsafeRawPointer.self)
542
570
}
543
571
"""
544
572
}
@@ -597,7 +625,9 @@ final class AssociatedObjectTests: XCTestCase {
597
625
}
598
626
599
627
@inline(never) static var __associated_stringKey: UnsafeRawPointer {
600
- _associated_object_key()
628
+ let f: @convention(c) () -> Void = {
629
+ }
630
+ return unsafeBitCast(f, to: UnsafeRawPointer.self)
601
631
}
602
632
"""
603
633
}
@@ -654,7 +684,9 @@ final class AssociatedObjectTests: XCTestCase {
654
684
}
655
685
656
686
@inline(never) static var __associated_stringKey: UnsafeRawPointer {
657
- _associated_object_key()
687
+ let f: @convention(c) () -> Void = {
688
+ }
689
+ return unsafeBitCast(f, to: UnsafeRawPointer.self)
658
690
}
659
691
"""
660
692
}
@@ -725,7 +757,9 @@ final class AssociatedObjectTests: XCTestCase {
725
757
}
726
758
727
759
@inline(never) static var __associated_stringKey: UnsafeRawPointer {
728
- _associated_object_key()
760
+ let f: @convention(c) () -> Void = {
761
+ }
762
+ return unsafeBitCast(f, to: UnsafeRawPointer.self)
729
763
}
730
764
"""
731
765
}
@@ -784,7 +818,9 @@ final class AssociatedObjectTests: XCTestCase {
784
818
}
785
819
786
820
@inline(never) static var __associated_stringKey: UnsafeRawPointer {
787
- _associated_object_key()
821
+ let f: @convention(c) () -> Void = {
822
+ }
823
+ return unsafeBitCast(f, to: UnsafeRawPointer.self)
788
824
}
789
825
"""
790
826
}
@@ -841,7 +877,9 @@ final class AssociatedObjectTests: XCTestCase {
841
877
}
842
878
843
879
@inline(never) static var __associated_stringKey: UnsafeRawPointer {
844
- _associated_object_key()
880
+ let f: @convention(c) () -> Void = {
881
+ }
882
+ return unsafeBitCast(f, to: UnsafeRawPointer.self)
845
883
}
846
884
"""
847
885
}
@@ -884,7 +922,9 @@ final class AssociatedObjectTests: XCTestCase {
884
922
}
885
923
886
924
@inline(never) static var __associated_stringKey: UnsafeRawPointer {
887
- _associated_object_key()
925
+ let f: @convention(c) () -> Void = {
926
+ }
927
+ return unsafeBitCast(f, to: UnsafeRawPointer.self)
888
928
}
889
929
"""
890
930
}
@@ -1049,4 +1089,30 @@ extension AssociatedObjectTests {
1049
1089
XCTAssertEqual ( item. definedInProtocol, " modified " )
1050
1090
}
1051
1091
}
1092
+
1093
+ extension AssociatedObjectTests {
1094
+ func testKeysUnique( ) {
1095
+ let keys = [
1096
+ ClassType . __associated_intKey,
1097
+ ClassType . __associated_doubleKey,
1098
+ ClassType . __associated_stringKey,
1099
+ ClassType . __associated_boolKey,
1100
+ ClassType . __associated_optionalIntKey,
1101
+ ClassType . __associated_optionalDoubleKey,
1102
+ ClassType . __associated_optionalStringKey,
1103
+ ClassType . __associated_optionalBoolKey,
1104
+ ClassType . __associated_implicitlyUnwrappedStringKey,
1105
+ ClassType . __associated_intArrayKey,
1106
+ ClassType . __associated_doubleArrayKey,
1107
+ ClassType . __associated_stringArrayKey,
1108
+ ClassType . __associated_boolArrayKey,
1109
+ ClassType . __associated_optionalIntArrayKey,
1110
+ ClassType . __associated_optionalDoubleArrayKey,
1111
+ ClassType . __associated_optionalStringArrayKey,
1112
+ ClassType . __associated_optionalBoolArrayKey,
1113
+ ClassType . __associated_classTypeKey,
1114
+ ]
1115
+ XCTAssertEqual ( Set ( keys) . count, keys. count)
1116
+ }
1117
+ }
1052
1118
#endif
0 commit comments