@@ -27,7 +27,7 @@ import StdlibUnittest
27
27
let tests = TestSuite ( " ArrayBridge " )
28
28
29
29
var trackedCount = 0
30
- var nextTrackedSerialNumber = 0
30
+ var nextBaseSerialNumber = 0
31
31
32
32
@objc protocol Fooable {
33
33
func foo( )
@@ -41,13 +41,13 @@ var nextTrackedSerialNumber = 0
41
41
func baz( )
42
42
}
43
43
44
- class Tracked : NSObject , Fooable {
44
+ class Base : NSObject , Fooable {
45
45
func foo( ) { }
46
46
47
47
required init ( _ value: Int ) {
48
48
trackedCount += 1
49
- nextTrackedSerialNumber += 1
50
- serialNumber = nextTrackedSerialNumber
49
+ nextBaseSerialNumber += 1
50
+ serialNumber = nextBaseSerialNumber
51
51
self . value = value
52
52
}
53
53
@@ -58,7 +58,7 @@ class Tracked : NSObject, Fooable {
58
58
}
59
59
60
60
override var description : String {
61
- assert ( serialNumber > 0 , " dead Tracked ! " )
61
+ assert ( serialNumber > 0 , " dead Base ! " )
62
62
return " Base# \( serialNumber) ( \( value) ) "
63
63
}
64
64
@@ -67,46 +67,36 @@ class Tracked : NSObject, Fooable {
67
67
}
68
68
69
69
override func isEqual( _ other: AnyObject ? ) -> Bool {
70
- return ( other as? Tracked ) ? . value == self . value
70
+ return ( other as? Base ) ? . value == self . value
71
71
}
72
72
73
73
var value : Int
74
74
var serialNumber : Int
75
75
}
76
76
77
- typealias Base = Tracked
78
77
class Derived : Base , Barable {
79
78
func bar( ) { }
80
-
81
79
override var description : String {
82
- assert ( serialNumber > 0 , " dead Tracked ! " )
80
+ assert ( serialNumber > 0 , " dead Base ! " )
83
81
return " Derived# \( serialNumber) ( \( value) ) "
84
82
}
85
83
}
86
84
87
- class BridgedObjC : Base , Barable {
88
- func bar( ) { }
89
- override var description : String {
90
- assert ( serialNumber > 0 , " dead Tracked! " )
91
- return " BridgedObjC# \( serialNumber) ( \( value) ) "
92
- }
93
- }
94
-
95
85
var bridgeFromOperationCount = 0
96
86
var bridgeToOperationCount = 0
97
87
98
88
struct BridgedSwift : CustomStringConvertible , _ObjectiveCBridgeable {
99
- func _bridgeToObjectiveC( ) -> BridgedObjC {
89
+ func _bridgeToObjectiveC( ) -> Derived {
100
90
bridgeToOperationCount += 1
101
- return BridgedObjC ( trak. value)
91
+ return Derived ( trak. value)
102
92
}
103
93
104
94
static func _isBridgedToObjectiveC( ) -> Bool {
105
95
return true
106
96
}
107
97
108
98
static func _forceBridgeFromObjectiveC(
109
- _ x: BridgedObjC ,
99
+ _ x: Derived ,
110
100
result: inout BridgedSwift ?
111
101
) {
112
102
assert ( x. value >= 0 , " not bridged " )
@@ -115,7 +105,7 @@ struct BridgedSwift : CustomStringConvertible, _ObjectiveCBridgeable {
115
105
}
116
106
117
107
static func _conditionallyBridgeFromObjectiveC(
118
- _ x: BridgedObjC ,
108
+ _ x: Derived ,
119
109
result: inout BridgedSwift ?
120
110
) -> Bool {
121
111
if x. value >= 0 {
@@ -127,20 +117,20 @@ struct BridgedSwift : CustomStringConvertible, _ObjectiveCBridgeable {
127
117
return false
128
118
}
129
119
130
- static func _unconditionallyBridgeFromObjectiveC( _ source: BridgedObjC ? )
120
+ static func _unconditionallyBridgeFromObjectiveC( _ source: Derived ? )
131
121
-> BridgedSwift {
132
122
var result : BridgedSwift ? = nil
133
123
_forceBridgeFromObjectiveC ( source!, result: & result)
134
124
return result!
135
125
}
136
126
137
127
var description : String {
138
- assert ( trak. serialNumber > 0 , " dead Tracked ! " )
128
+ assert ( trak. serialNumber > 0 , " dead Base ! " )
139
129
return " BridgedSwift# \( trak. serialNumber) ( \( trak. value) ) "
140
130
}
141
131
142
132
init ( _ value: Int ) {
143
- self . trak = Tracked ( value)
133
+ self . trak = Base ( value)
144
134
}
145
135
146
136
func successor( ) -> BridgedSwift {
@@ -152,25 +142,25 @@ struct BridgedSwift : CustomStringConvertible, _ObjectiveCBridgeable {
152
142
bridgeToOperationCount = 0
153
143
}
154
144
155
- var trak : Tracked
145
+ var trak : Base
156
146
}
157
147
158
148
// A class used to test various Objective-C thunks.
159
149
class Thunks : NSObject {
160
- func createBridgedObjC ( _ value: Int ) -> AnyObject {
161
- return BridgedObjC ( value)
150
+ func createDerived ( _ value: Int ) -> AnyObject {
151
+ return Derived ( value)
162
152
}
163
153
164
- @objc func acceptBridgedObjCArray ( _ x: [ BridgedObjC ] ) {
165
- print ( " acceptBridgedObjCArray (\( x) ) " )
154
+ @objc func acceptDerivedArray ( _ x: [ Derived ] ) {
155
+ print ( " acceptDerivedArray (\( x) ) " )
166
156
}
167
157
168
- @objc func produceBridgedObjCArray ( _ numItems: Int ) -> [ BridgedObjC ] {
169
- var array : [ BridgedObjC ] = [ ]
158
+ @objc func produceDerivedArray ( _ numItems: Int ) -> [ Derived ] {
159
+ var array : [ Derived ] = [ ]
170
160
for i in 0 ..< numItems {
171
- array. append ( BridgedObjC ( i) )
161
+ array. append ( Derived ( i) )
172
162
}
173
- print ( " produceBridgedObjCArray (\( array) ) " )
163
+ print ( " produceDerivedArray (\( array) ) " )
174
164
return array
175
165
}
176
166
@@ -195,7 +185,7 @@ class Thunks : NSObject {
195
185
//===----------------------------------------------------------------------===//
196
186
197
187
tests. test ( " testBridgedVerbatim " ) {
198
- nextTrackedSerialNumber = 0
188
+ nextBaseSerialNumber = 0
199
189
let bases : [ Base ] = [ Base ( 100 ) , Base ( 200 ) , Base ( 300 ) ]
200
190
201
191
//===--- Implicit conversion to/from NSArray ------------------------------===//
@@ -280,23 +270,22 @@ tests.test("testBridgedVerbatim") {
280
270
expectEmpty ( derivedAsAnyObjectArray as? [ protocol < Barable , Bazable > ] )
281
271
}
282
272
283
- func doTestBridgedObjC ( ) {
284
- // CHECK: doTestBridgedObjC
285
- print ( " doTestBridgedObjC " )
273
+ func doTestDerived ( ) {
274
+ // CHECK: doTestDerived
275
+ print ( " doTestDerived " )
286
276
287
- testBridgedObjC ( Thunks ( ) )
288
- // CHECK-NEXT: produceBridgedObjCArray([BridgedObjC[[A:#[0-9]+]](0), BridgedObjC[[B:#[0-9]+]](1), BridgedObjC[[C:#[0-9]+]](2), BridgedObjC[[D:#[0-9]+]](3), BridgedObjC[[E:#[0-9]+]](4)])
289
- testBridgedObjC ( Thunks ( ) )
277
+ // CHECK-NEXT: produceDerivedArray([Derived[[A:#[0-9]+]](0), Derived[[B:#[0-9]+]](1), Derived[[C:#[0-9]+]](2), Derived[[D:#[0-9]+]](3), Derived[[E:#[0-9]+]](4)])
278
+ testDerived ( Thunks ( ) )
290
279
// CHECK-NEXT: 5 elements in the array
291
- // CHECK-NEXT: BridgedObjC [[A]](0)
292
- // CHECK-NEXT: BridgedObjC [[B]](1)
293
- // CHECK-NEXT: BridgedObjC [[C]](2)
294
- // CHECK-NEXT: BridgedObjC [[D]](3)
295
- // CHECK-NEXT: BridgedObjC [[E]](4)
280
+ // CHECK-NEXT: Derived [[A]](0)
281
+ // CHECK-NEXT: Derived [[B]](1)
282
+ // CHECK-NEXT: Derived [[C]](2)
283
+ // CHECK-NEXT: Derived [[D]](3)
284
+ // CHECK-NEXT: Derived [[E]](4)
296
285
297
- // CHECK-NEXT: acceptBridgedObjCArray([BridgedObjC [[A:#[0-9]+]](10), BridgedObjC [[B:#[0-9]+]](11), BridgedObjC [[C:#[0-9]+]](12), BridgedObjC [[D:#[0-9]+]](13), BridgedObjC [[E:#[0-9]+]](14)])
286
+ // CHECK-NEXT: acceptDerivedArray([Derived [[A:#[0-9]+]](10), Derived [[B:#[0-9]+]](11), Derived [[C:#[0-9]+]](12), Derived [[D:#[0-9]+]](13), Derived [[E:#[0-9]+]](14)])
298
287
}
299
- doTestBridgedObjC ( )
288
+ doTestDerived ( )
300
289
301
290
//===--- Explicitly Bridged -----------------------------------------------===//
302
291
// BridgedSwift conforms to _ObjectiveCBridgeable
@@ -308,7 +297,7 @@ func testExplicitlyBridged() {
308
297
let bridgedSwifts = [ BridgedSwift ( 42 ) , BridgedSwift ( 17 ) ]
309
298
310
299
let bridgedSwiftsAsNSArray = bridgedSwifts as NSArray
311
- // CHECK-NEXT: [BridgedObjC #{{[0-9]+}}(42), BridgedObjC #{{[0-9]+}}(17)]
300
+ // CHECK-NEXT: [Derived #{{[0-9]+}}(42), Derived #{{[0-9]+}}(17)]
312
301
print ( " bridgedSwiftsAsNSArray = \( bridgedSwiftsAsNSArray as [ AnyObject ] ) ) " )
313
302
314
303
// Make sure we can bridge back.
@@ -336,77 +325,77 @@ func testExplicitlyBridged() {
336
325
// defining @objc method taking [T] and returning [T]
337
326
338
327
// Up-casts.
339
- let bridgedSwiftsAsBridgedObjCs : [ BridgedObjC ] = bridgedSwifts
340
- // CHECK-NEXT: BridgedObjC #[[ID0:[0-9]+]](42)
341
- print ( bridgedSwiftsAsBridgedObjCs [ 0 ] )
342
- // CHECK-NEXT: BridgedObjC #[[ID1:[0-9]+]](17)
343
- print ( bridgedSwiftsAsBridgedObjCs [ 1 ] )
328
+ let bridgedSwiftsAsDeriveds : [ Derived ] = bridgedSwifts
329
+ // CHECK-NEXT: Derived #[[ID0:[0-9]+]](42)
330
+ print ( bridgedSwiftsAsDeriveds [ 0 ] )
331
+ // CHECK-NEXT: Derived #[[ID1:[0-9]+]](17)
332
+ print ( bridgedSwiftsAsDeriveds [ 1 ] )
344
333
345
334
let bridgedSwiftsAsBases : [ Base ] = bridgedSwifts
346
- // CHECK-NEXT: BridgedObjC #[[ID0:[0-9]+]](42)
335
+ // CHECK-NEXT: Derived #[[ID0:[0-9]+]](42)
347
336
print ( bridgedSwiftsAsBases [ 0 ] )
348
- // CHECK-NEXT: BridgedObjC #[[ID1:[0-9]+]](17)
337
+ // CHECK-NEXT: Derived #[[ID1:[0-9]+]](17)
349
338
print ( bridgedSwiftsAsBases [ 1 ] )
350
339
351
340
let bridgedSwiftsAsAnyObjects : [ AnyObject ] = bridgedSwifts
352
- // CHECK-NEXT: BridgedObjC #[[ID0:[0-9]+]](42)
341
+ // CHECK-NEXT: Derived #[[ID0:[0-9]+]](42)
353
342
print ( bridgedSwiftsAsAnyObjects [ 0 ] )
354
- // CHECK-NEXT: BridgedObjC #[[ID1:[0-9]+]](17)
343
+ // CHECK-NEXT: Derived #[[ID1:[0-9]+]](17)
355
344
print ( bridgedSwiftsAsAnyObjects [ 1 ] )
356
345
357
346
// Downcasts of non-verbatim bridged value types to objects.
358
347
do {
359
- let downcasted = bridgedSwifts as [ BridgedObjC ]
360
- // CHECK-NEXT: BridgedObjC #[[ID0:[0-9]+]](42)
348
+ let downcasted = bridgedSwifts as [ Derived ]
349
+ // CHECK-NEXT: Derived #[[ID0:[0-9]+]](42)
361
350
print ( downcasted [ 0 ] )
362
- // CHECK-NEXT: BridgedObjC #[[ID1:[0-9]+]](17)
351
+ // CHECK-NEXT: Derived #[[ID1:[0-9]+]](17)
363
352
print ( downcasted [ 1 ] )
364
353
}
365
354
366
355
do {
367
356
let downcasted = bridgedSwifts as [ Base ]
368
- // CHECK-NEXT: BridgedObjC #[[ID0:[0-9]+]](42)
357
+ // CHECK-NEXT: Derived #[[ID0:[0-9]+]](42)
369
358
print ( downcasted [ 0 ] )
370
- // CHECK-NEXT: BridgedObjC #[[ID1:[0-9]+]](17)
359
+ // CHECK-NEXT: Derived #[[ID1:[0-9]+]](17)
371
360
print ( downcasted [ 1 ] )
372
361
}
373
362
374
363
do {
375
364
let downcasted = bridgedSwifts as [ AnyObject ]
376
- // CHECK-NEXT: BridgedObjC #[[ID0:[0-9]+]](42)
365
+ // CHECK-NEXT: Derived #[[ID0:[0-9]+]](42)
377
366
print ( downcasted [ 0 ] )
378
- // CHECK-NEXT: BridgedObjC #[[ID1:[0-9]+]](17)
367
+ // CHECK-NEXT: Derived #[[ID1:[0-9]+]](17)
379
368
print ( downcasted [ 1 ] )
380
369
}
381
370
382
371
// Downcasts of up-casted arrays.
383
- if let downcasted = bridgedSwiftsAsAnyObjects as? [ BridgedObjC ] {
384
- // CHECK-NEXT: BridgedObjC #[[ID0:[0-9]+]](42)
372
+ if let downcasted = bridgedSwiftsAsAnyObjects as? [ Derived ] {
373
+ // CHECK-NEXT: Derived #[[ID0:[0-9]+]](42)
385
374
print ( downcasted [ 0 ] )
386
- // CHECK-NEXT: BridgedObjC #[[ID1:[0-9]+]](17)
375
+ // CHECK-NEXT: Derived #[[ID1:[0-9]+]](17)
387
376
print ( downcasted [ 1 ] )
388
377
} else {
389
- print ( " Could not downcast [AnyObject] to [BridgedObjC ]? " )
378
+ print ( " Could not downcast [AnyObject] to [Derived ]? " )
390
379
}
391
380
392
381
if let downcasted = bridgedSwiftsAsAnyObjects as? [ Base ] {
393
- // CHECK-NEXT: BridgedObjC #[[ID0:[0-9]+]](42)
382
+ // CHECK-NEXT: Derived #[[ID0:[0-9]+]](42)
394
383
print ( downcasted [ 0 ] )
395
- // CHECK-NEXT: BridgedObjC #[[ID1:[0-9]+]](17)
384
+ // CHECK-NEXT: Derived #[[ID1:[0-9]+]](17)
396
385
print ( downcasted [ 1 ] )
397
386
} else {
398
387
print ( " Could not downcast [AnyObject] to [Base]? " )
399
388
}
400
389
401
390
// Downcast of Cocoa array to an array of classes.
402
391
let wrappedCocoaBridgedSwifts = cocoaBridgedSwifts as [ AnyObject ]
403
- if let downcasted = wrappedCocoaBridgedSwifts as? [ BridgedObjC ] {
404
- // CHECK-NEXT: BridgedObjC #[[ID0:[0-9]+]](42)
392
+ if let downcasted = wrappedCocoaBridgedSwifts as? [ Derived ] {
393
+ // CHECK-NEXT: Derived #[[ID0:[0-9]+]](42)
405
394
print ( downcasted [ 0 ] )
406
- // CHECK-NEXT: BridgedObjC #[[ID1:[0-9]+]](17)
395
+ // CHECK-NEXT: Derived #[[ID1:[0-9]+]](17)
407
396
print ( downcasted [ 1 ] )
408
397
} else {
409
- print ( " Could not downcast [AnyObject] to [BridgedObjC ]? " )
398
+ print ( " Could not downcast [AnyObject] to [Derived ]? " )
410
399
}
411
400
412
401
// Downcast of Cocoa array to an array of values.
@@ -470,11 +459,11 @@ func testExplicitlyBridged() {
470
459
// CHECK-NEXT: produceBridgedSwiftArray([BridgedSwift[[A:#[0-9]+]](0), BridgedSwift[[B:#[0-9]+]](1), BridgedSwift[[C:#[0-9]+]](2), BridgedSwift[[D:#[0-9]+]](3), BridgedSwift[[E:#[0-9]+]](4)])
471
460
testBridgedSwift ( Thunks ( ) )
472
461
// CHECK-NEXT: 5 elements in the array
473
- // CHECK-NEXT: BridgedObjC [[A:#[0-9]+]](0)
474
- // CHECK-NEXT: BridgedObjC [[B:#[0-9]+]](1)
475
- // CHECK-NEXT: BridgedObjC [[C:#[0-9]+]](2)
476
- // CHECK-NEXT: BridgedObjC [[D:#[0-9]+]](3)
477
- // CHECK-NEXT: BridgedObjC [[E:#[0-9]+]](4)
462
+ // CHECK-NEXT: Derived [[A:#[0-9]+]](0)
463
+ // CHECK-NEXT: Derived [[B:#[0-9]+]](1)
464
+ // CHECK-NEXT: Derived [[C:#[0-9]+]](2)
465
+ // CHECK-NEXT: Derived [[D:#[0-9]+]](3)
466
+ // CHECK-NEXT: Derived [[E:#[0-9]+]](4)
478
467
479
468
// CHECK-NEXT: acceptBridgedSwiftArray([BridgedSwift[[A:#[0-9]+]](10), BridgedSwift[[B:#[0-9]+]](11), BridgedSwift[[C:#[0-9]+]](12), BridgedSwift[[D:#[0-9]+]](13), BridgedSwift[[E:#[0-9]+]](14)])
480
469
}
0 commit comments