@@ -13,35 +13,23 @@ import ObjectiveC
13
13
14
14
var FailableInitTestSuite = TestSuite ( " FailableInit " )
15
15
16
- class Canary {
17
- static var count : Int = 0
18
-
19
- init ( ) {
20
- Canary . count += 1
21
- }
22
-
23
- deinit {
24
- Canary . count -= 1
25
- }
26
- }
27
-
28
16
class Bear {
29
- let x : Canary
17
+ let x : LifetimeTracked
30
18
31
19
/* Designated */
32
20
init ( n: Int ) {
33
- x = Canary ( )
21
+ x = LifetimeTracked ( 0 )
34
22
}
35
23
36
24
init ? ( n: Int , before: Bool ) {
37
25
if before {
38
26
return nil
39
27
}
40
- self . x = Canary ( )
28
+ self . x = LifetimeTracked ( 0 )
41
29
}
42
30
43
31
init ? ( n: Int , after: Bool ) {
44
- self . x = Canary ( )
32
+ self . x = LifetimeTracked ( 0 )
45
33
if after {
46
34
return nil
47
35
}
@@ -51,7 +39,7 @@ class Bear {
51
39
if before {
52
40
return nil
53
41
}
54
- self . x = Canary ( )
42
+ self . x = LifetimeTracked ( 0 )
55
43
if after {
56
44
return nil
57
45
}
@@ -121,45 +109,45 @@ class Bear {
121
109
}
122
110
123
111
class PolarBear : Bear {
124
- let y : Canary
112
+ let y : LifetimeTracked
125
113
126
114
/* Designated */
127
115
override init ( n: Int ) {
128
- self . y = Canary ( )
116
+ self . y = LifetimeTracked ( 0 )
129
117
super. init ( n: n)
130
118
}
131
119
132
120
override init ? ( n: Int , before: Bool ) {
133
121
if before {
134
122
return nil
135
123
}
136
- self . y = Canary ( )
124
+ self . y = LifetimeTracked ( 0 )
137
125
super. init ( n: n)
138
126
}
139
127
140
128
init ? ( n: Int , during: Bool ) {
141
- self . y = Canary ( )
129
+ self . y = LifetimeTracked ( 0 )
142
130
super. init ( n: n, before: during)
143
131
}
144
132
145
133
init ? ( n: Int , before: Bool , during: Bool ) {
146
- self . y = Canary ( )
134
+ self . y = LifetimeTracked ( 0 )
147
135
if before {
148
136
return nil
149
137
}
150
138
super. init ( n: n, before: during)
151
139
}
152
140
153
141
override init ? ( n: Int , after: Bool ) {
154
- self . y = Canary ( )
142
+ self . y = LifetimeTracked ( 0 )
155
143
super. init ( n: n)
156
144
if after {
157
145
return nil
158
146
}
159
147
}
160
148
161
149
init ? ( n: Int , during: Bool , after: Bool ) {
162
- self . y = Canary ( )
150
+ self . y = LifetimeTracked ( 0 )
163
151
super. init ( n: n, before: during)
164
152
if after {
165
153
return nil
@@ -170,7 +158,7 @@ class PolarBear : Bear {
170
158
if before {
171
159
return nil
172
160
}
173
- self . y = Canary ( )
161
+ self . y = LifetimeTracked ( 0 )
174
162
super. init ( n: n)
175
163
if after {
176
164
return nil
@@ -181,7 +169,7 @@ class PolarBear : Bear {
181
169
if before {
182
170
return nil
183
171
}
184
- self . y = Canary ( )
172
+ self . y = LifetimeTracked ( 0 )
185
173
super. init ( n: n, before: during)
186
174
if after {
187
175
return nil
@@ -190,50 +178,50 @@ class PolarBear : Bear {
190
178
}
191
179
192
180
class GuineaPig < T> : Bear {
193
- let y : Canary
181
+ let y : LifetimeTracked
194
182
let t : T
195
183
196
184
init ? ( t: T , during: Bool ) {
197
- self . y = Canary ( )
185
+ self . y = LifetimeTracked ( 0 )
198
186
self . t = t
199
187
super. init ( n: 0 , before: during)
200
188
}
201
189
}
202
190
203
191
struct Chimera {
204
- let x : Canary
205
- let y : Canary
192
+ let x : LifetimeTracked
193
+ let y : LifetimeTracked
206
194
207
195
init ? ( before: Bool ) {
208
196
if before {
209
197
return nil
210
198
}
211
- x = Canary ( )
212
- y = Canary ( )
199
+ x = LifetimeTracked ( 0 )
200
+ y = LifetimeTracked ( 0 )
213
201
}
214
202
215
203
init ? ( during: Bool ) {
216
- x = Canary ( )
204
+ x = LifetimeTracked ( 0 )
217
205
if during {
218
206
return nil
219
207
}
220
- y = Canary ( )
208
+ y = LifetimeTracked ( 0 )
221
209
}
222
210
223
211
init ? ( before: Bool , during: Bool ) {
224
212
if before {
225
213
return nil
226
214
}
227
- x = Canary ( )
215
+ x = LifetimeTracked ( 0 )
228
216
if during {
229
217
return nil
230
218
}
231
- y = Canary ( )
219
+ y = LifetimeTracked ( 0 )
232
220
}
233
221
234
222
init ? ( after: Bool ) {
235
- x = Canary ( )
236
- y = Canary ( )
223
+ x = LifetimeTracked ( 0 )
224
+ y = LifetimeTracked ( 0 )
237
225
if after {
238
226
return nil
239
227
}
@@ -243,19 +231,19 @@ struct Chimera {
243
231
if before {
244
232
return nil
245
233
}
246
- x = Canary ( )
247
- y = Canary ( )
234
+ x = LifetimeTracked ( 0 )
235
+ y = LifetimeTracked ( 0 )
248
236
if after {
249
237
return nil
250
238
}
251
239
}
252
240
253
241
init ? ( during: Bool , after: Bool ) {
254
- x = Canary ( )
242
+ x = LifetimeTracked ( 0 )
255
243
if during {
256
244
return nil
257
245
}
258
- y = Canary ( )
246
+ y = LifetimeTracked ( 0 )
259
247
if after {
260
248
return nil
261
249
}
@@ -265,11 +253,11 @@ struct Chimera {
265
253
if before {
266
254
return nil
267
255
}
268
- x = Canary ( )
256
+ x = LifetimeTracked ( 0 )
269
257
if during {
270
258
return nil
271
259
}
272
- y = Canary ( )
260
+ y = LifetimeTracked ( 0 )
273
261
if after {
274
262
return nil
275
263
}
@@ -287,8 +275,6 @@ FailableInitTestSuite.test("FailableInitFailure_Root") {
287
275
mustFail { Bear ( n: 0 , after: true ) }
288
276
mustFail { Bear ( n: 0 , before: true , after: false ) }
289
277
mustFail { Bear ( n: 0 , before: false , after: true ) }
290
-
291
- expectEqual ( 0 , Canary . count)
292
278
}
293
279
294
280
FailableInitTestSuite . test ( " FailableInitFailure_Derived " ) {
@@ -304,14 +290,10 @@ FailableInitTestSuite.test("FailableInitFailure_Derived") {
304
290
mustFail { PolarBear ( n: 0 , before: true , during: false , after: false ) }
305
291
mustFail { PolarBear ( n: 0 , before: false , during: true , after: false ) }
306
292
mustFail { PolarBear ( n: 0 , before: false , during: false , after: true ) }
307
-
308
- expectEqual ( 0 , Canary . count)
309
293
}
310
294
311
295
FailableInitTestSuite . test ( " DesignatedInitFailure_DerivedGeneric " ) {
312
- mustFail { GuineaPig < Canary > ( t: Canary ( ) , during: true ) }
313
-
314
- expectEqual ( 0 , Canary . count)
296
+ mustFail { GuineaPig < LifetimeTracked > ( t: LifetimeTracked ( 0 ) , during: true ) }
315
297
}
316
298
317
299
FailableInitTestSuite . test ( " ConvenienceInitFailure_Root " ) {
@@ -330,8 +312,6 @@ FailableInitTestSuite.test("ConvenienceInitFailure_Root") {
330
312
331
313
_ = Bear ( IUO: false )
332
314
_ = Bear ( force: false )
333
-
334
- expectEqual ( 0 , Canary . count)
335
315
}
336
316
337
317
FailableInitTestSuite . test ( " ConvenienceInitFailure_Derived " ) {
@@ -347,8 +327,6 @@ FailableInitTestSuite.test("ConvenienceInitFailure_Derived") {
347
327
mustFail { PolarBear ( before: true , during: false , after: false ) }
348
328
mustFail { PolarBear ( before: false , during: true , after: false ) }
349
329
mustFail { PolarBear ( before: false , during: false , after: true ) }
350
-
351
- expectEqual ( 0 , Canary . count)
352
330
}
353
331
354
332
FailableInitTestSuite . test ( " InitFailure_Struct " ) {
@@ -364,8 +342,6 @@ FailableInitTestSuite.test("InitFailure_Struct") {
364
342
mustFail { Chimera ( before: true , during: false , after: false ) }
365
343
mustFail { Chimera ( before: false , during: true , after: false ) }
366
344
mustFail { Chimera ( before: false , during: false , after: true ) }
367
-
368
- expectEqual ( 0 , Canary . count)
369
345
}
370
346
371
347
runAllTests ( )
0 commit comments