@@ -104,7 +104,7 @@ extension Driver {
104
104
105
105
try addPrecompileModuleDependenciesJobs ( addJob: addJobBeforeCompiles)
106
106
try addPrecompileBridgingHeaderJob ( addJob: addJobBeforeCompiles)
107
- try addEmitModuleJob ( addJob : addJobBeforeCompiles)
107
+ try addEmitModuleJob ( addJobBeforeCompiles : addJobBeforeCompiles, addJobAfterCompiles : addJobAfterCompiles )
108
108
let linkerInputs = try addJobsFeedingLinker (
109
109
addJobBeforeCompiles: addJobBeforeCompiles,
110
110
addCompileJobGroup: addCompileJobGroup,
@@ -183,9 +183,11 @@ extension Driver {
183
183
)
184
184
}
185
185
186
- private mutating func addEmitModuleJob( addJob : ( Job ) -> Void ) throws {
186
+ private mutating func addEmitModuleJob( addJobBeforeCompiles : ( Job ) -> Void , addJobAfterCompiles : ( Job ) -> Void ) throws {
187
187
if shouldCreateEmitModuleJob {
188
- addJob ( try emitModuleJob ( ) )
188
+ let emitModuleJob = try emitModuleJob ( )
189
+ addJobBeforeCompiles ( emitModuleJob)
190
+ try addVerifyJobs ( emitModuleJob: emitModuleJob, addJob: addJobAfterCompiles)
189
191
}
190
192
}
191
193
@@ -221,9 +223,11 @@ extension Driver {
221
223
}
222
224
}
223
225
224
- try addSingleCompileJobs ( addJob: addJobBeforeCompiles,
226
+ if let compileJob = try addSingleCompileJobs ( addJob: addJobBeforeCompiles,
225
227
addJobOutputs: addJobOutputs,
226
- emitModuleTrace: loadedModuleTracePath != nil )
228
+ emitModuleTrace: loadedModuleTracePath != nil ) {
229
+ try addVerifyJobs ( emitModuleJob: compileJob, addJob: addJobAfterCompiles)
230
+ }
227
231
228
232
try addJobsForPrimaryInputs (
229
233
addCompileJobGroup: addCompileJobGroup,
@@ -239,7 +243,7 @@ extension Driver {
239
243
moduleInputs: moduleInputs,
240
244
moduleInputsFromJobOutputs: moduleInputsFromJobOutputs) {
241
245
addJobAfterCompiles ( mergeJob)
242
- try addVerifyJobs ( mergeJob : mergeJob, addJob: addJobAfterCompiles)
246
+ try addVerifyJobs ( emitModuleJob : mergeJob, addJob: addJobAfterCompiles)
243
247
try addWrapJobOrMergeOutputs (
244
248
mergeJob: mergeJob,
245
249
debugInfo: debugInfo,
@@ -249,13 +253,15 @@ extension Driver {
249
253
return linkerInputs
250
254
}
251
255
256
+ /// When in single compile, add one compile job and possiblity multiple backend jobs.
257
+ /// Return the compile job if one was created.
252
258
private mutating func addSingleCompileJobs(
253
259
addJob: ( Job ) -> Void ,
254
260
addJobOutputs: ( [ TypedVirtualPath ] ) -> Void ,
255
261
emitModuleTrace: Bool
256
- ) throws {
262
+ ) throws -> Job ? {
257
263
guard case . singleCompile = compilerMode
258
- else { return }
264
+ else { return nil }
259
265
260
266
if parsedOptions. hasArgument ( . embedBitcode) ,
261
267
inputFiles. allSatisfy ( { $0. type. isPartOfSwiftCompilation } ) {
@@ -270,6 +276,7 @@ extension Driver {
270
276
: nil
271
277
}
272
278
backendJobs. forEach ( addJob)
279
+ return compile
273
280
} else {
274
281
// We can skip the compile jobs if all we want is a module when it's
275
282
// built separately.
@@ -278,6 +285,7 @@ extension Driver {
278
285
addJobOutputs: addJobOutputs,
279
286
emitModuleTrace: emitModuleTrace)
280
287
addJob ( compile)
288
+ return compile
281
289
}
282
290
}
283
291
@@ -395,7 +403,7 @@ extension Driver {
395
403
return try mergeModuleJob ( inputs: moduleInputs, inputsFromOutputs: moduleInputsFromJobOutputs)
396
404
}
397
405
398
- private mutating func addVerifyJobs( mergeJob : Job , addJob: ( Job ) -> Void )
406
+ private mutating func addVerifyJobs( emitModuleJob : Job , addJob: ( Job ) -> Void )
399
407
throws {
400
408
guard
401
409
parsedOptions. hasArgument ( . enableLibraryEvolution) ,
@@ -413,7 +421,7 @@ extension Driver {
413
421
414
422
let outputType : FileType =
415
423
forPrivate ? . privateSwiftInterface : . swiftInterface
416
- let mergeInterfaceOutputs = mergeJob . outputs. filter { $0. type == outputType }
424
+ let mergeInterfaceOutputs = emitModuleJob . outputs. filter { $0. type == outputType }
417
425
assert ( mergeInterfaceOutputs. count == 1 ,
418
426
" Merge module job should only have one swiftinterface output " )
419
427
let job = try verifyModuleInterfaceJob ( interfaceInput: mergeInterfaceOutputs [ 0 ] )
0 commit comments