@@ -117,67 +117,6 @@ extension InterModuleDependencyGraph {
117117}
118118
119119@_spi ( Testing) public extension InterModuleDependencyGraph {
120- /// Merge a module with a given ID and Info into a ModuleInfoMap
121- static func mergeModule( _ moduleId: ModuleDependencyId ,
122- _ moduleInfo: ModuleInfo ,
123- into moduleInfoMap: inout ModuleInfoMap ) throws {
124- switch moduleId {
125- case . swift:
126- let prebuiltExternalModuleEquivalentId =
127- ModuleDependencyId . swiftPrebuiltExternal ( moduleId. moduleName)
128- let placeholderEquivalentId =
129- ModuleDependencyId . swiftPlaceholder ( moduleId. moduleName)
130- if moduleInfoMap [ prebuiltExternalModuleEquivalentId] != nil ||
131- moduleInfoMap [ moduleId] != nil {
132- // If the set of discovered externalModules contains a .swiftPrebuiltExternal or .swift module
133- // with the same name, do not replace it.
134- break
135- } else if moduleInfoMap [ placeholderEquivalentId] != nil {
136- // Replace the placeholder module with a full .swift ModuleInfo
137- // and fixup other externalModules' dependencies
138- replaceModule ( originalId: placeholderEquivalentId, replacementId: moduleId,
139- replacementInfo: moduleInfo, in: & moduleInfoMap)
140- } else {
141- // Insert the new module
142- moduleInfoMap [ moduleId] = moduleInfo
143- }
144-
145- case . swiftPrebuiltExternal:
146- // If the set of discovered externalModules contains a .swift module with the same name,
147- // replace it with the prebuilt version and fixup other externalModules' dependencies
148- let swiftModuleEquivalentId = ModuleDependencyId . swift ( moduleId. moduleName)
149- let swiftPlaceholderEquivalentId = ModuleDependencyId . swiftPlaceholder ( moduleId. moduleName)
150- if moduleInfoMap [ swiftModuleEquivalentId] != nil {
151- // If the ModuleInfoMap contains an equivalent .swift module, replace it with the prebuilt
152- // version and update all other externalModules' dependencies
153- replaceModule ( originalId: swiftModuleEquivalentId, replacementId: moduleId,
154- replacementInfo: moduleInfo, in: & moduleInfoMap)
155- } else if moduleInfoMap [ swiftPlaceholderEquivalentId] != nil {
156- // If the moduleInfoMap contains an equivalent .swiftPlaceholder module, replace it with
157- // the prebuilt version and update all other externalModules' dependencies
158- replaceModule ( originalId: swiftPlaceholderEquivalentId, replacementId: moduleId,
159- replacementInfo: moduleInfo, in: & moduleInfoMap)
160- } else {
161- // Insert the new module
162- moduleInfoMap [ moduleId] = moduleInfo
163- }
164-
165- case . clang:
166- guard let existingModuleInfo = moduleInfoMap [ moduleId] else {
167- moduleInfoMap [ moduleId] = moduleInfo
168- break
169- }
170- // If this module *has* been seen before, merge the module infos to capture
171- // the super-set of so-far discovered dependencies of this module at various
172- // PCMArg scanning actions.
173- let combinedDependenciesInfo = mergeClangModuleInfoDependencies ( moduleInfo,
174- existingModuleInfo)
175- replaceModule ( originalId: moduleId, replacementId: moduleId,
176- replacementInfo: combinedDependenciesInfo, in: & moduleInfoMap)
177- case . swiftPlaceholder:
178- fatalError ( " Unresolved placeholder dependency at graph merge operation: \( moduleId) " )
179- }
180- }
181120
182121 /// Replace an existing module in the moduleInfoMap
183122 static func replaceModule( originalId: ModuleDependencyId , replacementId: ModuleDependencyId ,
@@ -207,53 +146,6 @@ extension InterModuleDependencyGraph {
207146 }
208147 }
209148 }
210-
211- /// Given two moduleInfos of clang externalModules, merge them by combining their directDependencies and
212- /// dependenciesCapturedPCMArgs and sourceFiles fields. These fields may differ across the same module
213- /// scanned at different PCMArgs (e.g. -target option).
214- static func mergeClangModuleInfoDependencies( _ firstInfo: ModuleInfo , _ secondInfo: ModuleInfo
215- ) -> ModuleInfo {
216- guard case . clang( let firstDetails) = firstInfo. details,
217- case . clang( let secondDetails) = secondInfo. details
218- else {
219- fatalError ( " mergeClangModules expected two valid ClangModuleDetails objects. " )
220- }
221-
222- // As far as their dependencies go, these module infos are identical
223- if firstInfo. directDependencies == secondInfo. directDependencies,
224- firstDetails. capturedPCMArgs == secondDetails. capturedPCMArgs,
225- firstInfo. sourceFiles == secondInfo. sourceFiles {
226- return firstInfo
227- }
228-
229- // Create a new moduleInfo that represents this module with combined dependency information
230- let firstModuleSources = firstInfo. sourceFiles ?? [ ]
231- let secondModuleSources = secondInfo. sourceFiles ?? [ ]
232- let combinedSourceFiles = Array ( Set ( firstModuleSources + secondModuleSources) )
233-
234- let firstModuleDependencies = firstInfo. directDependencies ?? [ ]
235- let secondModuleDependencies = secondInfo. directDependencies ?? [ ]
236- let combinedDependencies = Array ( Set ( firstModuleDependencies + secondModuleDependencies) )
237- let firstLinkLibraries = firstInfo. linkLibraries ?? [ ]
238- let secondLinkLibraries = secondInfo. linkLibraries ?? [ ]
239- let combinedLinkLibraries = Array ( Set ( firstLinkLibraries + secondLinkLibraries) )
240-
241- let firstModuleCapturedPCMArgs = firstDetails. capturedPCMArgs ?? Set < [ String ] > ( )
242- let secondModuleCapturedPCMArgs = secondDetails. capturedPCMArgs ?? Set < [ String ] > ( )
243- let combinedCapturedPCMArgs = firstModuleCapturedPCMArgs. union ( secondModuleCapturedPCMArgs)
244-
245- let combinedModuleDetails =
246- ClangModuleDetails ( moduleMapPath: firstDetails. moduleMapPath,
247- contextHash: firstDetails. contextHash,
248- commandLine: firstDetails. commandLine,
249- capturedPCMArgs: combinedCapturedPCMArgs)
250-
251- return ModuleInfo ( modulePath: firstInfo. modulePath,
252- sourceFiles: combinedSourceFiles,
253- directDependencies: combinedDependencies,
254- linkLibraries: combinedLinkLibraries,
255- details: . clang( combinedModuleDetails) )
256- }
257149}
258150
259151/// Incremental Build Machinery
0 commit comments