@@ -341,38 +341,15 @@ public struct Driver {
341
341
/// Original ObjC Header passed from command-line
342
342
let originalObjCHeaderFile : VirtualPath . Handle ?
343
343
344
-
345
344
/// Enable bridging header chaining.
346
345
let bridgingHeaderChaining : Bool
347
346
348
- /// The path to the imported Objective-C header.
349
- lazy var importedObjCHeader : VirtualPath . Handle ? = {
350
- assert ( explicitDependencyBuildPlanner != nil ||
351
- !parsedOptions. hasArgument ( . driverExplicitModuleBuild) ||
352
- !inputFiles. contains { $0. type == . swift } ,
353
- " should not be queried before scanning " )
354
- let chainedBridgingHeader = try ? explicitDependencyBuildPlanner? . getChainedBridgingHeaderFile ( )
355
- return try ? computeImportedObjCHeader ( & parsedOptions, compilerMode: compilerMode,
356
- chainedBridgingHeader: chainedBridgingHeader) ?? originalObjCHeaderFile
357
- } ( )
358
-
359
347
/// The directory to emit PCH file.
360
348
lazy var bridgingPrecompiledHeaderOutputDir : VirtualPath ? = {
361
349
return try ? computePrecompiledBridgingHeaderDir ( & parsedOptions,
362
350
compilerMode: compilerMode)
363
351
} ( )
364
352
365
- /// The path to the pch for the imported Objective-C header.
366
- lazy var bridgingPrecompiledHeader : VirtualPath . Handle ? = {
367
- let contextHash = try ? explicitDependencyBuildPlanner? . getMainModuleContextHash ( )
368
- return computeBridgingPrecompiledHeader ( & parsedOptions,
369
- compilerMode: compilerMode,
370
- importedObjCHeader: importedObjCHeader,
371
- outputFileMap: outputFileMap,
372
- outputDirectory: bridgingPrecompiledHeaderOutputDir,
373
- contextHash: contextHash)
374
- } ( )
375
-
376
353
/// Path to the dependencies file.
377
354
let dependenciesFilePath : VirtualPath . Handle ?
378
355
@@ -621,14 +598,6 @@ public struct Driver {
621
598
/// The mode the API digester should run in.
622
599
let digesterMode : DigesterMode
623
600
624
- // FIXME: We should soon be able to remove this from being in the Driver's state.
625
- // Its only remaining use outside of actual dependency build planning is in
626
- // command-line input option generation for the explicit main module compile job.
627
- /// Planner for constructing module build jobs using Explicit Module Builds.
628
- /// Constructed during the planning phase only when all module dependencies will be prebuilt and treated
629
- /// as explicit inputs by the various compilation jobs.
630
- @_spi ( Testing) public var explicitDependencyBuildPlanner : ExplicitDependencyBuildPlanner ? = nil
631
-
632
601
/// A reference to the instance of libSwiftScan which is shared with the driver's
633
602
/// `InterModuleDependencyOracle`, but also used for non-scanning tasks, such as target info
634
603
/// and supported compiler feature queries
@@ -1357,9 +1326,9 @@ public struct Driver {
1357
1326
}
1358
1327
1359
1328
public mutating func planBuild( ) throws -> [ Job ] {
1360
- let ( jobs, incrementalCompilationState, intermoduleDependencyGraph ) = try planPossiblyIncrementalBuild ( )
1329
+ let ( jobs, incrementalCompilationState, explicitModulePlanner ) = try planPossiblyIncrementalBuild ( )
1361
1330
self . incrementalCompilationState = incrementalCompilationState
1362
- self . intermoduleDependencyGraph = intermoduleDependencyGraph
1331
+ self . intermoduleDependencyGraph = explicitModulePlanner ? . dependencyGraph
1363
1332
return jobs
1364
1333
}
1365
1334
}
@@ -1748,11 +1717,9 @@ extension Diagnostic.Message {
1748
1717
}
1749
1718
1750
1719
extension Driver {
1751
- func explainModuleDependency( _ explainModuleName: String , allPaths: Bool ) throws {
1752
- guard let dependencyPlanner = explicitDependencyBuildPlanner else {
1753
- fatalError ( " Cannot explain dependency without Explicit Build Planner " )
1754
- }
1755
- guard let dependencyPaths = try dependencyPlanner. explainDependency ( explainModuleName, allPaths: allPaths) else {
1720
+ func explainModuleDependency( _ explainModuleName: String , allPaths: Bool ,
1721
+ moduleDependencyGraph: InterModuleDependencyGraph ) throws {
1722
+ guard let dependencyPaths = try moduleDependencyGraph. explainDependency ( explainModuleName, allPaths: allPaths) else {
1756
1723
diagnosticEngine. emit ( . remark( " No such module dependency found: ' \( explainModuleName) ' " ) )
1757
1724
return
1758
1725
}
@@ -1824,13 +1791,6 @@ extension Driver {
1824
1791
return
1825
1792
}
1826
1793
1827
- // If we're only supposed to explain a dependency on a given module, do so now.
1828
- if let explainModuleName = parsedOptions. getLastArgument ( . explainModuleDependencyDetailed) {
1829
- try explainModuleDependency ( explainModuleName. asSingle, allPaths: true )
1830
- } else if let explainModuleNameDetailed = parsedOptions. getLastArgument ( . explainModuleDependency) {
1831
- try explainModuleDependency ( explainModuleNameDetailed. asSingle, allPaths: false )
1832
- }
1833
-
1834
1794
if parsedOptions. contains ( . driverPrintOutputFileMap) {
1835
1795
if let outputFileMap = self . outputFileMap {
1836
1796
stderrStream. send ( outputFileMap. description)
@@ -2023,7 +1983,7 @@ extension Driver {
2023
1983
2024
1984
// Put bridging header as first input if we have it
2025
1985
let allInputs : [ TypedVirtualPath ]
2026
- if let objcHeader = importedObjCHeader , bridgingPrecompiledHeader != nil {
1986
+ if let objcHeader = originalObjCHeaderFile {
2027
1987
allInputs = [ TypedVirtualPath ( file: objcHeader, type: . objcHeader) ] + inputFiles
2028
1988
} else {
2029
1989
allInputs = inputFiles
@@ -2048,10 +2008,7 @@ extension Driver {
2048
2008
// All input action IDs for this action.
2049
2009
var inputIds = [ UInt] ( )
2050
2010
2051
- var jobInputs = job. primaryInputs. isEmpty ? job. inputs : job. primaryInputs
2052
- if let pchPath = bridgingPrecompiledHeader, job. kind == . compile {
2053
- jobInputs. append ( TypedVirtualPath ( file: pchPath, type: . pch) )
2054
- }
2011
+ let jobInputs = job. primaryInputs. isEmpty ? job. inputs : job. primaryInputs
2055
2012
// Collect input job IDs.
2056
2013
for input in jobInputs {
2057
2014
if let id = inputIdMap [ input] {
0 commit comments