@@ -265,7 +265,7 @@ private func createResolvedPackages(
265
265
}
266
266
267
267
// Gather all module aliases specified for targets in all dependent packages
268
- let pkgToAliasesMap = gatherModuleAliases ( for: rootManifests. first? . key, with: packagesByIdentity, onError: observabilityScope)
268
+ let packageAliases = gatherModuleAliases ( from : packageBuilders , for: rootManifests. first? . key, with: packagesByIdentity, onError: observabilityScope)
269
269
270
270
// Scan and validate the dependencies
271
271
for packageBuilder in packageBuilders {
@@ -276,7 +276,7 @@ private func createResolvedPackages(
276
276
metadata: package . diagnosticsMetadata
277
277
)
278
278
279
- if let aliasMap = pkgToAliasesMap [ package . identity] {
279
+ if let aliasMap = packageAliases ? [ package . identity] {
280
280
package . setModuleAliasesForTargets ( with: aliasMap)
281
281
}
282
282
@@ -523,9 +523,20 @@ private func createResolvedPackages(
523
523
}
524
524
525
525
// Create a map between a package and module aliases specified for the targets in the package.
526
- private func gatherModuleAliases( for rootPkgID: PackageIdentity ? ,
526
+ private func gatherModuleAliases( from packageBuilders: [ ResolvedPackageBuilder ] ,
527
+ for rootPkgID: PackageIdentity ? ,
527
528
with packagesByIdentity: [ PackageIdentity : ResolvedPackageBuilder ] ,
528
- onError observabilityScope: ObservabilityScope ) -> [ PackageIdentity : [ String : String ] ] {
529
+ onError observabilityScope: ObservabilityScope ) -> [ PackageIdentity : [ String : String ] ] ? {
530
+ // If there are no aliases, return early
531
+ let depsWithAliases = packageBuilders. map { $0. package . targets. map { $0. dependencies. filter { dep in
532
+ if case let . product( prodRef, _) = dep {
533
+ return prodRef. moduleAliases != nil
534
+ }
535
+ return false
536
+ } } } . flatMap { $0} . flatMap { $0}
537
+
538
+ guard !depsWithAliases. isEmpty else { return nil }
539
+
529
540
var result = [ PackageIdentity: [ String: String] ] ( )
530
541
531
542
// There could be multiple root packages but the common cases involve
@@ -580,14 +591,13 @@ private func walkPkgTreeAndGetModuleAliases(for pkgID: PackageIdentity,
580
591
break
581
592
}
582
593
}
583
-
584
- // Add pkgID to a stack used to keep track of multiple
585
- // aliases specified in the package chain. Need to add
586
- // pkgID here, otherwise need pkgID != pkgInChain check
587
- // in the for loop above
588
- pkgStack. append ( pkgID)
589
594
}
590
-
595
+ // Add pkgID to a stack used to keep track of multiple
596
+ // aliases specified in the package chain. Need to add
597
+ // pkgID here, otherwise need pkgID != pkgInChain check
598
+ // in the for loop above
599
+ pkgStack. append ( pkgID)
600
+
591
601
// Recursively (depth-first) walk the package dependency tree
592
602
for pkgDep in builder. package . manifest. dependencies {
593
603
walkPkgTreeAndGetModuleAliases ( for: pkgDep. identity, with: packagesByIdentity, onError: observabilityScope, using: & pkgStack, output: & result)
0 commit comments