@@ -69,33 +69,13 @@ final class TAPISymbolExtractorTaskProducer: PhasedTaskProducer, TaskProducer {
6969 // which in turn depends on the PACKAGE:TARGET target that generates the module map.
7070 var dependenciesModuleMaps = OrderedSet < Path > ( )
7171 if let configuredTarget = context. configuredTarget {
72- let currentPlatformFilter = PlatformFilter ( scope)
73- var remainingDependenciesToProcess = configuredTarget. target. dependencies [ ... ]
74- var encounteredDependencies = Set ( remainingDependenciesToProcess. map { $0. guid } )
75- while let dependency = remainingDependenciesToProcess. popFirst ( ) {
76- if currentPlatformFilter. matches ( dependency. platformFilters) ,
77- let dependencyTarget = context. workspaceContext. workspace. dynamicTarget ( for: dependency. guid, dynamicallyBuildingTargets: context. globalProductPlan. dynamicallyBuildingTargets)
78- {
79- // Find the right build parameters for each dependency
80- let dependencyParameters : BuildParameters
81- if let otherConfiguredTarget = context. globalProductPlan. planRequest. buildGraph. dependencies ( of: configuredTarget) . first ( where: { $0. target. guid == dependencyTarget. guid } ) {
82- dependencyParameters = otherConfiguredTarget. parameters
83- } else {
84- dependencyParameters = context. globalProductPlan. planRequest. buildGraph. buildRequest. buildTargets. first ( where: { $0. target. guid == dependencyTarget. guid } ) ? . parameters ?? configuredTarget. parameters
85- }
86-
87- let settings = context. settingsForProductReferenceTarget ( dependencyTarget, parameters: dependencyParameters)
88- let dependencyConfiguredTarget = ConfiguredTarget ( parameters: dependencyParameters, target: dependencyTarget)
89-
90- if let moduleInfo = context. globalProductPlan. getModuleInfo ( dependencyConfiguredTarget) {
91- dependenciesModuleMaps. append ( moduleInfo. moduleMapPaths. builtPath)
92- } else if let moduleMapPath = settings. globalScope. evaluate ( BuiltinMacros . MODULEMAP_PATH) . nilIfEmpty {
93- dependenciesModuleMaps. append ( Path ( moduleMapPath) )
94- }
95-
96- let newDependencies = dependencyConfiguredTarget. target. dependencies. filter { !encounteredDependencies. contains ( $0. guid) }
97- encounteredDependencies. formUnion ( newDependencies. map { $0. guid} )
98- remainingDependenciesToProcess. append ( contentsOf: newDependencies)
72+ let transitiveClosure = transitiveClosure ( [ configuredTarget] , successors: { context. globalProductPlan. dependencies ( of: $0) } ) . result
73+ for dependencyTarget in transitiveClosure {
74+ let settings = context. globalProductPlan. getTargetSettings ( dependencyTarget)
75+ if let moduleInfo = context. globalProductPlan. getModuleInfo ( dependencyTarget) {
76+ dependenciesModuleMaps. append ( moduleInfo. moduleMapPaths. builtPath)
77+ } else if let moduleMapPath = settings. globalScope. evaluate ( BuiltinMacros . MODULEMAP_PATH) . nilIfEmpty {
78+ dependenciesModuleMaps. append ( Path ( moduleMapPath) )
9979 }
10080 }
10181 }
0 commit comments