@@ -103,13 +103,13 @@ final class BuildSystemManagerTests: XCTestCase {
103
103
104
104
bs. map [ a] = FileBuildSettings ( compilerArguments: [ " x " ] )
105
105
let initial = expectation ( description: " initial settings " )
106
- await del. setExpected ( [ ( a, bs. map [ a] !, initial, #file, #line) ] )
106
+ await del. setExpected ( [ ( a, . swift , bs. map [ a] !, initial, #file, #line) ] )
107
107
await bsm. registerForChangeNotifications ( for: a, language: . swift)
108
108
try await fulfillmentOfOrThrow ( [ initial] )
109
109
110
110
bs. map [ a] = nil
111
111
let changed = expectation ( description: " changed settings " )
112
- await del. setExpected ( [ ( a, nil , changed, #file, #line) ] )
112
+ await del. setExpected ( [ ( a, . swift , nil , changed, #file, #line) ] )
113
113
bsm. fileBuildSettingsChanged ( [ a: . removedOrUnavailable] )
114
114
try await fulfillmentOfOrThrow ( [ changed] )
115
115
}
@@ -126,13 +126,13 @@ final class BuildSystemManagerTests: XCTestCase {
126
126
defer { withExtendedLifetime ( bsm) { } } // Keep BSM alive for callbacks.
127
127
let del = await BSMDelegate ( bsm)
128
128
let initial = expectation ( description: " initial settings " )
129
- await del. setExpected ( [ ( a, nil , initial, #file, #line) ] )
129
+ await del. setExpected ( [ ( a, . swift , nil , initial, #file, #line) ] )
130
130
await bsm. registerForChangeNotifications ( for: a, language: . swift)
131
131
try await fulfillmentOfOrThrow ( [ initial] )
132
132
133
133
bs. map [ a] = FileBuildSettings ( compilerArguments: [ " x " ] )
134
134
let changed = expectation ( description: " changed settings " )
135
- await del. setExpected ( [ ( a, bs. map [ a] !, changed, #file, #line) ] )
135
+ await del. setExpected ( [ ( a, . swift , bs. map [ a] !, changed, #file, #line) ] )
136
136
bsm. fileBuildSettingsChanged ( [ a: . modified( bs. map [ a] !) ] )
137
137
try await fulfillmentOfOrThrow ( [ changed] )
138
138
}
@@ -151,19 +151,19 @@ final class BuildSystemManagerTests: XCTestCase {
151
151
let del = await BSMDelegate ( bsm)
152
152
let fallbackSettings = fallback. buildSettings ( for: a, language: . swift)
153
153
let initial = expectation ( description: " initial fallback settings " )
154
- await del. setExpected ( [ ( a, fallbackSettings, initial, #file, #line) ] )
154
+ await del. setExpected ( [ ( a, . swift , fallbackSettings, initial, #file, #line) ] )
155
155
await bsm. registerForChangeNotifications ( for: a, language: . swift)
156
156
try await fulfillmentOfOrThrow ( [ initial] )
157
157
158
158
bs. map [ a] = FileBuildSettings ( compilerArguments: [ " non-fallback " , " args " ] )
159
159
let changed = expectation ( description: " changed settings " )
160
- await del. setExpected ( [ ( a, bs. map [ a] !, changed, #file, #line) ] )
160
+ await del. setExpected ( [ ( a, . swift , bs. map [ a] !, changed, #file, #line) ] )
161
161
bsm. fileBuildSettingsChanged ( [ a: . modified( bs. map [ a] !) ] )
162
162
try await fulfillmentOfOrThrow ( [ changed] )
163
163
164
164
bs. map [ a] = nil
165
165
let revert = expectation ( description: " revert to fallback settings " )
166
- await del. setExpected ( [ ( a, fallbackSettings, revert, #file, #line) ] )
166
+ await del. setExpected ( [ ( a, . swift , fallbackSettings, revert, #file, #line) ] )
167
167
bsm. fileBuildSettingsChanged ( [ a: . removedOrUnavailable] )
168
168
try await fulfillmentOfOrThrow ( [ revert] )
169
169
}
@@ -184,18 +184,18 @@ final class BuildSystemManagerTests: XCTestCase {
184
184
bs. map [ a] = FileBuildSettings ( compilerArguments: [ " x " ] )
185
185
bs. map [ b] = FileBuildSettings ( compilerArguments: [ " y " ] )
186
186
let initial = expectation ( description: " initial settings " )
187
- await del. setExpected ( [ ( a, bs. map [ a] !, initial, #file, #line) ] )
187
+ await del. setExpected ( [ ( a, . swift , bs. map [ a] !, initial, #file, #line) ] )
188
188
await bsm. registerForChangeNotifications ( for: a, language: . swift)
189
189
try await fulfillmentOfOrThrow ( [ initial] )
190
190
let initialB = expectation ( description: " initial settings " )
191
- await del. setExpected ( [ ( b, bs. map [ b] !, initialB, #file, #line) ] )
191
+ await del. setExpected ( [ ( b, . swift , bs. map [ b] !, initialB, #file, #line) ] )
192
192
await bsm. registerForChangeNotifications ( for: b, language: . swift)
193
193
try await fulfillmentOfOrThrow ( [ initialB] )
194
194
195
195
bs. map [ a] = FileBuildSettings ( compilerArguments: [ " xx " ] )
196
196
bs. map [ b] = FileBuildSettings ( compilerArguments: [ " yy " ] )
197
197
let changed = expectation ( description: " changed settings " )
198
- await del. setExpected ( [ ( a, bs. map [ a] !, changed, #file, #line) ] )
198
+ await del. setExpected ( [ ( a, . swift , bs. map [ a] !, changed, #file, #line) ] )
199
199
bsm. fileBuildSettingsChanged ( [ a: . modified( bs. map [ a] !) ] )
200
200
try await fulfillmentOfOrThrow ( [ changed] )
201
201
@@ -205,8 +205,8 @@ final class BuildSystemManagerTests: XCTestCase {
205
205
let changedBothA = expectation ( description: " changed setting a " )
206
206
let changedBothB = expectation ( description: " changed setting b " )
207
207
await del. setExpected ( [
208
- ( a, bs. map [ a] !, changedBothA, #file, #line) ,
209
- ( b, bs. map [ b] !, changedBothB, #file, #line) ,
208
+ ( a, . swift , bs. map [ a] !, changedBothA, #file, #line) ,
209
+ ( b, . swift , bs. map [ b] !, changedBothB, #file, #line) ,
210
210
] )
211
211
bsm. fileBuildSettingsChanged ( [
212
212
a: . modified( bs. map [ a] !) ,
@@ -232,19 +232,19 @@ final class BuildSystemManagerTests: XCTestCase {
232
232
bs. map [ b] = FileBuildSettings ( compilerArguments: [ " b " ] )
233
233
234
234
let initialA = expectation ( description: " initial settings a " )
235
- await del. setExpected ( [ ( a, bs. map [ a] !, initialA, #file, #line) ] )
235
+ await del. setExpected ( [ ( a, . swift , bs. map [ a] !, initialA, #file, #line) ] )
236
236
await bsm. registerForChangeNotifications ( for: a, language: . swift)
237
237
try await fulfillmentOfOrThrow ( [ initialA] )
238
238
239
239
let initialB = expectation ( description: " initial settings b " )
240
- await del. setExpected ( [ ( b, bs. map [ b] !, initialB, #file, #line) ] )
240
+ await del. setExpected ( [ ( b, . swift , bs. map [ b] !, initialB, #file, #line) ] )
241
241
await bsm. registerForChangeNotifications ( for: b, language: . swift)
242
242
try await fulfillmentOfOrThrow ( [ initialB] )
243
243
244
244
bs. map [ a] = nil
245
245
bs. map [ b] = nil
246
246
let changed = expectation ( description: " changed settings " )
247
- await del. setExpected ( [ ( b, nil , changed, #file, #line) ] )
247
+ await del. setExpected ( [ ( b, . swift , nil , changed, #file, #line) ] )
248
248
bsm. fileBuildSettingsChanged ( [
249
249
b: . removedOrUnavailable
250
250
] )
@@ -274,35 +274,35 @@ final class BuildSystemManagerTests: XCTestCase {
274
274
bs. map [ cpp2] = FileBuildSettings ( compilerArguments: [ " C++ 2 " ] )
275
275
276
276
let initial = expectation ( description: " initial settings via cpp1 " )
277
- await del. setExpected ( [ ( h, bs. map [ cpp1] !, initial, #file, #line) ] )
277
+ await del. setExpected ( [ ( h, . c , bs. map [ cpp1] !, initial, #file, #line) ] )
278
278
await bsm. registerForChangeNotifications ( for: h, language: . c)
279
279
try await fulfillmentOfOrThrow ( [ initial] )
280
280
281
281
mainFiles. mainFiles [ h] = Set ( [ cpp2] )
282
282
283
283
let changed = expectation ( description: " changed settings to cpp2 " )
284
- await del. setExpected ( [ ( h, bs. map [ cpp2] !, changed, #file, #line) ] )
284
+ await del. setExpected ( [ ( h, . c , bs. map [ cpp2] !, changed, #file, #line) ] )
285
285
await bsm. mainFilesChangedImpl ( )
286
286
try await fulfillmentOfOrThrow ( [ changed] )
287
287
288
288
let changed2 = expectation ( description: " still cpp2, no update " )
289
289
changed2. isInverted = true
290
- await del. setExpected ( [ ( h, nil , changed2, #file, #line) ] )
290
+ await del. setExpected ( [ ( h, . c , nil , changed2, #file, #line) ] )
291
291
await bsm. mainFilesChangedImpl ( )
292
292
try await fulfillmentOfOrThrow ( [ changed2] , timeout: 1 )
293
293
294
294
mainFiles. mainFiles [ h] = Set ( [ cpp1, cpp2] )
295
295
296
296
let changed3 = expectation ( description: " added main file, no update " )
297
297
changed3. isInverted = true
298
- await del. setExpected ( [ ( h, nil , changed3, #file, #line) ] )
298
+ await del. setExpected ( [ ( h, . c , nil , changed3, #file, #line) ] )
299
299
await bsm. mainFilesChangedImpl ( )
300
300
try await fulfillmentOfOrThrow ( [ changed3] , timeout: 1 )
301
301
302
302
mainFiles. mainFiles [ h] = Set ( [ ] )
303
303
304
304
let changed4 = expectation ( description: " changed settings to [] " )
305
- await del. setExpected ( [ ( h, nil , changed4, #file, #line) ] )
305
+ await del. setExpected ( [ ( h, . c , nil , changed4, #file, #line) ] )
306
306
await bsm. mainFilesChangedImpl ( )
307
307
try await fulfillmentOfOrThrow ( [ changed4] )
308
308
}
@@ -333,8 +333,8 @@ final class BuildSystemManagerTests: XCTestCase {
333
333
let expectedArgsH1 = FileBuildSettings ( compilerArguments: [ " -xc++ " , cppArg, h1. pseudoPath] )
334
334
let expectedArgsH2 = FileBuildSettings ( compilerArguments: [ " -xc++ " , cppArg, h2. pseudoPath] )
335
335
await del. setExpected ( [
336
- ( h1, expectedArgsH1, initial1, #file, #line) ,
337
- ( h2, expectedArgsH2, initial2, #file, #line) ,
336
+ ( h1, . c , expectedArgsH1, initial1, #file, #line) ,
337
+ ( h2, . c , expectedArgsH2, initial2, #file, #line) ,
338
338
] )
339
339
340
340
await bsm. registerForChangeNotifications ( for: h1, language: . c)
@@ -351,8 +351,8 @@ final class BuildSystemManagerTests: XCTestCase {
351
351
let newArgsH1 = FileBuildSettings ( compilerArguments: [ " -xc++ " , newCppArg, h1. pseudoPath] )
352
352
let newArgsH2 = FileBuildSettings ( compilerArguments: [ " -xc++ " , newCppArg, h2. pseudoPath] )
353
353
await del. setExpected ( [
354
- ( h1, newArgsH1, changed1, #file, #line) ,
355
- ( h2, newArgsH2, changed2, #file, #line) ,
354
+ ( h1, . c , newArgsH1, changed1, #file, #line) ,
355
+ ( h2, . c , newArgsH2, changed2, #file, #line) ,
356
356
] )
357
357
bsm. fileBuildSettingsChanged ( [ cpp: . modified( bs. map [ cpp] !) ] )
358
358
@@ -381,9 +381,9 @@ final class BuildSystemManagerTests: XCTestCase {
381
381
let initialB = expectation ( description: " initial settings b " )
382
382
let initialC = expectation ( description: " initial settings c " )
383
383
await del. setExpected ( [
384
- ( a, bs. map [ a] !, initialA, #file, #line) ,
385
- ( b, bs. map [ b] !, initialB, #file, #line) ,
386
- ( c, bs. map [ c] !, initialC, #file, #line) ,
384
+ ( a, . swift , bs. map [ a] !, initialA, #file, #line) ,
385
+ ( b, . swift , bs. map [ b] !, initialB, #file, #line) ,
386
+ ( c, . swift , bs. map [ c] !, initialC, #file, #line) ,
387
387
] )
388
388
await bsm. registerForChangeNotifications ( for: a, language: . swift)
389
389
await bsm. registerForChangeNotifications ( for: b, language: . swift)
@@ -396,7 +396,7 @@ final class BuildSystemManagerTests: XCTestCase {
396
396
397
397
let changedB = expectation ( description: " changed settings b " )
398
398
await del. setExpected ( [
399
- ( b, bs. map [ b] !, changedB, #file, #line) ,
399
+ ( b, . swift , bs. map [ b] !, changedB, #file, #line) ,
400
400
] )
401
401
402
402
await bsm. unregisterForChangeNotifications ( for: a)
@@ -434,7 +434,7 @@ final class BuildSystemManagerTests: XCTestCase {
434
434
435
435
bs. map [ a] = FileBuildSettings ( compilerArguments: [ " x " ] )
436
436
let initial = expectation ( description: " initial settings " )
437
- await del. setExpected ( [ ( a, bs. map [ a] !, initial, #file, #line) ] )
437
+ await del. setExpected ( [ ( a, . swift , bs. map [ a] !, initial, #file, #line) ] )
438
438
439
439
let depUpdate1 = expectation ( description: " dependencies update during registration " )
440
440
await del. setExpectedDependenciesUpdate ( [ ( a, depUpdate1, #file, #line) ] )
@@ -508,7 +508,7 @@ class ManualBuildSystem: BuildSystem {
508
508
509
509
/// A `BuildSystemDelegate` setup for testing.
510
510
private actor BSMDelegate : BuildSystemDelegate {
511
- fileprivate typealias ExpectedBuildSettingChangedCall = ( uri: DocumentURI , settings: FileBuildSettings ? , expectation: XCTestExpectation , file: StaticString , line: UInt )
511
+ fileprivate typealias ExpectedBuildSettingChangedCall = ( uri: DocumentURI , language : Language , settings: FileBuildSettings ? , expectation: XCTestExpectation , file: StaticString , line: UInt )
512
512
fileprivate typealias ExpectedDependenciesUpdatedCall = ( uri: DocumentURI , expectation: XCTestExpectation , file: StaticString , line: UInt )
513
513
514
514
let queue : DispatchQueue = DispatchQueue ( label: " \( BSMDelegate . self) " )
@@ -536,15 +536,15 @@ private actor BSMDelegate: BuildSystemDelegate {
536
536
} ( )
537
537
}
538
538
539
- func fileBuildSettingsChanged( _ changes: [ DocumentURI : FileBuildSettingsChange ] ) {
540
- for (uri, change ) in changes {
539
+ func fileBuildSettingsChanged( _ changes: [ DocumentURI : FileBuildSettingsChange ] ) async {
540
+ for (uri, _ ) in changes {
541
541
guard let expected = expected. first ( where: { $0. uri == uri } ) else {
542
542
XCTFail ( " unexpected settings change for \( uri) " )
543
543
continue
544
544
}
545
545
546
546
XCTAssertEqual ( uri, expected. uri, file: expected. file, line: expected. line)
547
- let settings = change . newSettings
547
+ let settings = await bsm . buildSettings ( ofMainFileFor : uri , language : expected . language ) ? . buildSettings
548
548
XCTAssertEqual ( settings, expected. settings, file: expected. file, line: expected. line)
549
549
expected. expectation. fulfill ( )
550
550
}
0 commit comments