@@ -139,7 +139,7 @@ extension Driver {
139
139
140
140
try addPrecompileModuleDependenciesJobs ( addJob: addJobBeforeCompiles)
141
141
try addPrecompileBridgingHeaderJob ( addJob: addJobBeforeCompiles)
142
- try addEmitModuleJob ( addJob : addJobBeforeCompiles)
142
+ try addEmitModuleJob ( addJobBeforeCompiles : addJobBeforeCompiles, addJobAfterCompiles : addJobAfterCompiles )
143
143
let linkerInputs = try addJobsFeedingLinker (
144
144
addJobBeforeCompiles: addJobBeforeCompiles,
145
145
addCompileJobGroup: addCompileJobGroup,
@@ -175,9 +175,11 @@ extension Driver {
175
175
)
176
176
}
177
177
178
- private mutating func addEmitModuleJob( addJob : ( Job ) -> Void ) throws {
178
+ private mutating func addEmitModuleJob( addJobBeforeCompiles : ( Job ) -> Void , addJobAfterCompiles : ( Job ) -> Void ) throws {
179
179
if shouldCreateEmitModuleJob {
180
- addJob ( try emitModuleJob ( ) )
180
+ let emitModuleJob = try emitModuleJob ( )
181
+ addJobBeforeCompiles ( emitModuleJob)
182
+ try addVerifyJobs ( emitModuleJob: emitModuleJob, addJob: addJobAfterCompiles)
181
183
}
182
184
}
183
185
@@ -213,9 +215,11 @@ extension Driver {
213
215
}
214
216
}
215
217
216
- try addSingleCompileJobs ( addJob: addJobBeforeCompiles,
218
+ if let compileJob = try addSingleCompileJobs ( addJob: addJobBeforeCompiles,
217
219
addJobOutputs: addJobOutputs,
218
- emitModuleTrace: loadedModuleTracePath != nil )
220
+ emitModuleTrace: loadedModuleTracePath != nil ) {
221
+ try addVerifyJobs ( emitModuleJob: compileJob, addJob: addJobAfterCompiles)
222
+ }
219
223
220
224
try addJobsForPrimaryInputs (
221
225
addCompileJobGroup: addCompileJobGroup,
@@ -231,7 +235,7 @@ extension Driver {
231
235
moduleInputs: moduleInputs,
232
236
moduleInputsFromJobOutputs: moduleInputsFromJobOutputs) {
233
237
addJobAfterCompiles ( mergeJob)
234
- try addVerifyJobs ( mergeJob : mergeJob, addJob: addJobAfterCompiles)
238
+ try addVerifyJobs ( emitModuleJob : mergeJob, addJob: addJobAfterCompiles)
235
239
try addWrapJobOrMergeOutputs (
236
240
mergeJob: mergeJob,
237
241
debugInfo: debugInfo,
@@ -241,13 +245,15 @@ extension Driver {
241
245
return linkerInputs
242
246
}
243
247
248
+ /// When in single compile, add one compile job and possiblity multiple backend jobs.
249
+ /// Return the compile job if one was created.
244
250
private mutating func addSingleCompileJobs(
245
251
addJob: ( Job ) -> Void ,
246
252
addJobOutputs: ( [ TypedVirtualPath ] ) -> Void ,
247
253
emitModuleTrace: Bool
248
- ) throws {
254
+ ) throws -> Job ? {
249
255
guard case . singleCompile = compilerMode
250
- else { return }
256
+ else { return nil }
251
257
252
258
if parsedOptions. hasArgument ( . embedBitcode) ,
253
259
inputFiles. allSatisfy ( { $0. type. isPartOfSwiftCompilation } ) {
@@ -262,6 +268,7 @@ extension Driver {
262
268
: nil
263
269
}
264
270
backendJobs. forEach ( addJob)
271
+ return compile
265
272
} else {
266
273
// We can skip the compile jobs if all we want is a module when it's
267
274
// built separately.
@@ -270,6 +277,7 @@ extension Driver {
270
277
addJobOutputs: addJobOutputs,
271
278
emitModuleTrace: emitModuleTrace)
272
279
addJob ( compile)
280
+ return compile
273
281
}
274
282
}
275
283
@@ -387,7 +395,7 @@ extension Driver {
387
395
return try mergeModuleJob ( inputs: moduleInputs, inputsFromOutputs: moduleInputsFromJobOutputs)
388
396
}
389
397
390
- private mutating func addVerifyJobs( mergeJob : Job , addJob: ( Job ) -> Void )
398
+ private mutating func addVerifyJobs( emitModuleJob : Job , addJob: ( Job ) -> Void )
391
399
throws {
392
400
guard
393
401
parsedOptions. hasArgument ( . enableLibraryEvolution) ,
@@ -405,7 +413,7 @@ extension Driver {
405
413
406
414
let outputType : FileType =
407
415
forPrivate ? . privateSwiftInterface : . swiftInterface
408
- let mergeInterfaceOutputs = mergeJob . outputs. filter { $0. type == outputType }
416
+ let mergeInterfaceOutputs = emitModuleJob . outputs. filter { $0. type == outputType }
409
417
assert ( mergeInterfaceOutputs. count == 1 ,
410
418
" Merge module job should only have one swiftinterface output " )
411
419
let job = try verifyModuleInterfaceJob ( interfaceInput: mergeInterfaceOutputs [ 0 ] )
0 commit comments