@@ -519,7 +519,7 @@ ModuleDependencyScanner::resolveDirectModuleDependencies(
519
519
520
520
// Find all Swift overlays that this module depends on.
521
521
resolveSwiftOverlayDependencies (moduleID, allClangModules, cache,
522
- swiftOverlayDependencies);
522
+ swiftOverlayDependencies, directDependencies );
523
523
524
524
// Resolve the dependency info with dependency module information.
525
525
cache.resolveDependencyImports (moduleID, directDependencies.getArrayRef ());
@@ -674,7 +674,8 @@ void ModuleDependencyScanner::resolveSwiftOverlayDependencies(
674
674
const ModuleDependencyID &moduleID,
675
675
const std::vector<std::string> &clangDependencies,
676
676
ModuleDependenciesCache &cache,
677
- ModuleDependencyIDSetVector &swiftOverlayDependencies) {
677
+ ModuleDependencyIDSetVector &swiftOverlayDependencies,
678
+ ModuleDependencyIDSetVector &directDependencies) {
678
679
llvm::StringMap<llvm::Optional<ModuleDependencyVector>>
679
680
swiftOverlayLookupResult;
680
681
for (const auto &clangDep : clangDependencies)
@@ -705,18 +706,29 @@ void ModuleDependencyScanner::resolveSwiftOverlayDependencies(
705
706
// Aggregate both previously-cached and freshly-scanned module results
706
707
auto recordResult = [&cache, &swiftOverlayLookupResult,
707
708
&swiftOverlayDependencies,
709
+ &directDependencies,
708
710
moduleID](const std::string &moduleName) {
709
711
auto lookupResult = swiftOverlayLookupResult[moduleName];
710
712
if (moduleName != moduleID.ModuleName ) {
711
713
if (lookupResult == llvm::None) {
712
714
const ModuleDependencyInfo *cachedInfo = cache.findDependency (moduleName).value ();
713
715
swiftOverlayDependencies.insert ({moduleName, cachedInfo->getKind ()});
716
+ // FIXME: Once all clients know to fetch these dependencies from
717
+ // `swiftOverlayDependencies`, the goal is to no longer have them in
718
+ // `directDependencies` so the following will need to go away.
719
+ directDependencies.insert ({moduleName, cachedInfo->getKind ()});
714
720
} else {
715
721
// Cache discovered module dependencies.
716
722
cache.recordDependencies (lookupResult.value ());
717
- if (!lookupResult.value ().empty ())
723
+ if (!lookupResult.value ().empty ()) {
718
724
swiftOverlayDependencies.insert (
719
725
{moduleName, lookupResult.value ()[0 ].first .Kind });
726
+ // FIXME: Once all clients know to fetch these dependencies from
727
+ // `swiftOverlayDependencies`, the goal is to no longer have them in
728
+ // `directDependencies` so the following will need to go away.
729
+ directDependencies.insert (
730
+ {moduleName, lookupResult.value ()[0 ].first .Kind });
731
+ }
720
732
}
721
733
}
722
734
};
0 commit comments