@@ -519,7 +519,7 @@ ModuleDependencyScanner::resolveDirectModuleDependencies(
519519
520520 // Find all Swift overlays that this module depends on.
521521 resolveSwiftOverlayDependencies (moduleID, allClangModules, cache,
522- swiftOverlayDependencies);
522+ swiftOverlayDependencies, directDependencies );
523523
524524 // Resolve the dependency info with dependency module information.
525525 cache.resolveDependencyImports (moduleID, directDependencies.getArrayRef ());
@@ -674,7 +674,8 @@ void ModuleDependencyScanner::resolveSwiftOverlayDependencies(
674674 const ModuleDependencyID &moduleID,
675675 const std::vector<std::string> &clangDependencies,
676676 ModuleDependenciesCache &cache,
677- ModuleDependencyIDSetVector &swiftOverlayDependencies) {
677+ ModuleDependencyIDSetVector &swiftOverlayDependencies,
678+ ModuleDependencyIDSetVector &directDependencies) {
678679 llvm::StringMap<llvm::Optional<ModuleDependencyVector>>
679680 swiftOverlayLookupResult;
680681 for (const auto &clangDep : clangDependencies)
@@ -705,18 +706,29 @@ void ModuleDependencyScanner::resolveSwiftOverlayDependencies(
705706 // Aggregate both previously-cached and freshly-scanned module results
706707 auto recordResult = [&cache, &swiftOverlayLookupResult,
707708 &swiftOverlayDependencies,
709+ &directDependencies,
708710 moduleID](const std::string &moduleName) {
709711 auto lookupResult = swiftOverlayLookupResult[moduleName];
710712 if (moduleName != moduleID.ModuleName ) {
711713 if (lookupResult == llvm::None) {
712714 const ModuleDependencyInfo *cachedInfo = cache.findDependency (moduleName).value ();
713715 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 ()});
714720 } else {
715721 // Cache discovered module dependencies.
716722 cache.recordDependencies (lookupResult.value ());
717- if (!lookupResult.value ().empty ())
723+ if (!lookupResult.value ().empty ()) {
718724 swiftOverlayDependencies.insert (
719725 {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+ }
720732 }
721733 }
722734 };
0 commit comments