@@ -26,10 +26,6 @@ final class BuildSystemManagerTests: XCTestCase {
26
26
let d = DocumentURI ( string: " bsm:d " )
27
27
28
28
let mainFiles = ManualMainFilesProvider ( )
29
- defer {
30
- // BuildSystemManager has a weak reference to mainFiles. Keep it alive.
31
- _fixLifetime ( mainFiles)
32
- }
33
29
mainFiles. mainFiles = [
34
30
a: Set ( [ c] ) ,
35
31
b: Set ( [ c, d] ) ,
@@ -41,6 +37,7 @@ final class BuildSystemManagerTests: XCTestCase {
41
37
buildSystem: FallbackBuildSystem ( ) ,
42
38
fallbackBuildSystem: nil ,
43
39
mainFilesProvider: mainFiles)
40
+ defer { withExtendedLifetime ( bsm) { } } // Keep BSM alive for callbacks.
44
41
45
42
XCTAssertEqual ( bsm. _cachedMainFile ( for: a) , nil )
46
43
XCTAssertEqual ( bsm. _cachedMainFile ( for: b) , nil )
@@ -95,16 +92,13 @@ final class BuildSystemManagerTests: XCTestCase {
95
92
func testSettingsMainFile( ) {
96
93
let a = DocumentURI ( string: " bsm:a.swift " )
97
94
let mainFiles = ManualMainFilesProvider ( )
98
- defer {
99
- // BuildSystemManager has a weak reference to mainFiles. Keep it alive.
100
- _fixLifetime ( mainFiles)
101
- }
102
95
mainFiles. mainFiles = [ a: Set ( [ a] ) ]
103
96
let bs = ManualBuildSystem ( )
104
97
let bsm = BuildSystemManager (
105
98
buildSystem: bs,
106
99
fallbackBuildSystem: nil ,
107
100
mainFilesProvider: mainFiles)
101
+ defer { withExtendedLifetime ( bsm) { } } // Keep BSM alive for callbacks.
108
102
let del = BSMDelegate ( bsm)
109
103
110
104
bs. map [ a] = FileBuildSettings ( compilerArguments: [ " x " ] )
@@ -123,16 +117,13 @@ final class BuildSystemManagerTests: XCTestCase {
123
117
func testSettingsMainFileInitialNil( ) {
124
118
let a = DocumentURI ( string: " bsm:a.swift " )
125
119
let mainFiles = ManualMainFilesProvider ( )
126
- defer {
127
- // BuildSystemManager has a weak reference to mainFiles. Keep it alive.
128
- _fixLifetime ( mainFiles)
129
- }
130
120
mainFiles. mainFiles = [ a: Set ( [ a] ) ]
131
121
let bs = ManualBuildSystem ( )
132
122
let bsm = BuildSystemManager (
133
123
buildSystem: bs,
134
124
fallbackBuildSystem: nil ,
135
125
mainFilesProvider: mainFiles)
126
+ defer { withExtendedLifetime ( bsm) { } } // Keep BSM alive for callbacks.
136
127
let del = BSMDelegate ( bsm)
137
128
let initial = expectation ( description: " initial settings " )
138
129
del. expected = [ ( a, nil , initial, #file, #line) ]
@@ -149,17 +140,14 @@ final class BuildSystemManagerTests: XCTestCase {
149
140
func testSettingsMainFileWithFallback( ) {
150
141
let a = DocumentURI ( string: " bsm:a.swift " )
151
142
let mainFiles = ManualMainFilesProvider ( )
152
- defer {
153
- // BuildSystemManager has a weak reference to mainFiles. Keep it alive.
154
- _fixLifetime ( mainFiles)
155
- }
156
143
mainFiles. mainFiles = [ a: Set ( [ a] ) ]
157
144
let bs = ManualBuildSystem ( )
158
145
let fallback = FallbackBuildSystem ( )
159
146
let bsm = BuildSystemManager (
160
147
buildSystem: bs,
161
148
fallbackBuildSystem: fallback,
162
149
mainFilesProvider: mainFiles)
150
+ defer { withExtendedLifetime ( bsm) { } } // Keep BSM alive for callbacks.
163
151
let del = BSMDelegate ( bsm)
164
152
let fallbackSettings = fallback. settings ( for: a, . swift)
165
153
let initial = expectation ( description: " initial fallback settings " )
@@ -184,16 +172,13 @@ final class BuildSystemManagerTests: XCTestCase {
184
172
let a = DocumentURI ( string: " bsm:a.swift " )
185
173
let b = DocumentURI ( string: " bsm:b.swift " )
186
174
let mainFiles = ManualMainFilesProvider ( )
187
- defer {
188
- // BuildSystemManager has a weak reference to mainFiles. Keep it alive.
189
- _fixLifetime ( mainFiles)
190
- }
191
175
mainFiles. mainFiles = [ a: Set ( [ a] ) , b: Set ( [ b] ) ]
192
176
let bs = ManualBuildSystem ( )
193
177
let bsm = BuildSystemManager (
194
178
buildSystem: bs,
195
179
fallbackBuildSystem: nil ,
196
180
mainFilesProvider: mainFiles)
181
+ defer { withExtendedLifetime ( bsm) { } } // Keep BSM alive for callbacks.
197
182
let del = BSMDelegate ( bsm)
198
183
199
184
bs. map [ a] = FileBuildSettings ( compilerArguments: [ " x " ] )
@@ -234,16 +219,13 @@ final class BuildSystemManagerTests: XCTestCase {
234
219
let a = DocumentURI ( string: " bsm:a.swift " )
235
220
let b = DocumentURI ( string: " bsm:b.swift " )
236
221
let mainFiles = ManualMainFilesProvider ( )
237
- defer {
238
- // BuildSystemManager has a weak reference to mainFiles. Keep it alive.
239
- _fixLifetime ( mainFiles)
240
- }
241
222
mainFiles. mainFiles = [ a: Set ( [ a] ) , b: Set ( [ b] ) ]
242
223
let bs = ManualBuildSystem ( )
243
224
let bsm = BuildSystemManager (
244
225
buildSystem: bs,
245
226
fallbackBuildSystem: nil ,
246
227
mainFilesProvider: mainFiles)
228
+ defer { withExtendedLifetime ( bsm) { } } // Keep BSM alive for callbacks.
247
229
let del = BSMDelegate ( bsm)
248
230
249
231
bs. map [ a] = FileBuildSettings ( compilerArguments: [ " a " ] )
@@ -274,10 +256,6 @@ final class BuildSystemManagerTests: XCTestCase {
274
256
let cpp1 = DocumentURI ( string: " bsm:main.cpp " )
275
257
let cpp2 = DocumentURI ( string: " bsm:other.cpp " )
276
258
let mainFiles = ManualMainFilesProvider ( )
277
- defer {
278
- // BuildSystemManager has a weak reference to mainFiles. Keep it alive.
279
- _fixLifetime ( mainFiles)
280
- }
281
259
mainFiles. mainFiles = [
282
260
h: Set ( [ cpp1] ) ,
283
261
cpp1: Set ( [ cpp1] ) ,
@@ -289,6 +267,7 @@ final class BuildSystemManagerTests: XCTestCase {
289
267
buildSystem: bs,
290
268
fallbackBuildSystem: nil ,
291
269
mainFilesProvider: mainFiles)
270
+ defer { withExtendedLifetime ( bsm) { } } // Keep BSM alive for callbacks.
292
271
let del = BSMDelegate ( bsm)
293
272
294
273
bs. map [ cpp1] = FileBuildSettings ( compilerArguments: [ " C++ 1 " ] )
@@ -333,10 +312,6 @@ final class BuildSystemManagerTests: XCTestCase {
333
312
let h2 = DocumentURI ( string: " bsm:header2.h " )
334
313
let cpp = DocumentURI ( string: " bsm:main.cpp " )
335
314
let mainFiles = ManualMainFilesProvider ( )
336
- defer {
337
- // BuildSystemManager has a weak reference to mainFiles. Keep it alive.
338
- _fixLifetime ( mainFiles)
339
- }
340
315
mainFiles. mainFiles = [
341
316
h1: Set ( [ cpp] ) ,
342
317
h2: Set ( [ cpp] ) ,
@@ -347,6 +322,7 @@ final class BuildSystemManagerTests: XCTestCase {
347
322
buildSystem: bs,
348
323
fallbackBuildSystem: nil ,
349
324
mainFilesProvider: mainFiles)
325
+ defer { withExtendedLifetime ( bsm) { } } // Keep BSM alive for callbacks.
350
326
let del = BSMDelegate ( bsm)
351
327
352
328
bs. map [ cpp] = FileBuildSettings ( compilerArguments: [ " C++ Main File " ] )
@@ -382,16 +358,13 @@ final class BuildSystemManagerTests: XCTestCase {
382
358
let b = DocumentURI ( string: " bsm:b.swift " )
383
359
let c = DocumentURI ( string: " bsm:c.swift " )
384
360
let mainFiles = ManualMainFilesProvider ( )
385
- defer {
386
- // BuildSystemManager has a weak reference to mainFiles. Keep it alive.
387
- _fixLifetime ( mainFiles)
388
- }
389
361
mainFiles. mainFiles = [ a: Set ( [ a] ) , b: Set ( [ b] ) , c: Set ( [ c] ) ]
390
362
let bs = ManualBuildSystem ( )
391
363
let bsm = BuildSystemManager (
392
364
buildSystem: bs,
393
365
fallbackBuildSystem: nil ,
394
366
mainFilesProvider: mainFiles)
367
+ defer { withExtendedLifetime ( bsm) { } } // Keep BSM alive for callbacks.
395
368
let del = BSMDelegate ( bsm)
396
369
397
370
bs. map [ a] = FileBuildSettings ( compilerArguments: [ " a " ] )
@@ -436,10 +409,6 @@ final class BuildSystemManagerTests: XCTestCase {
436
409
func testDependenciesUpdated( ) {
437
410
let a = DocumentURI ( string: " bsm:a.swift " )
438
411
let mainFiles = ManualMainFilesProvider ( )
439
- defer {
440
- // BuildSystemManager has a weak reference to mainFiles. Keep it alive.
441
- _fixLifetime ( mainFiles)
442
- }
443
412
mainFiles. mainFiles = [ a: Set ( [ a] ) ]
444
413
445
414
class DepUpdateDuringRegistrationBS : ManualBuildSystem {
@@ -454,6 +423,7 @@ final class BuildSystemManagerTests: XCTestCase {
454
423
buildSystem: bs,
455
424
fallbackBuildSystem: nil ,
456
425
mainFilesProvider: mainFiles)
426
+ defer { withExtendedLifetime ( bsm) { } } // Keep BSM alive for callbacks.
457
427
let del = BSMDelegate ( bsm)
458
428
459
429
bs. map [ a] = FileBuildSettings ( compilerArguments: [ " x " ] )
0 commit comments