From 1828beabaf4f87fe29fc0d434db8dcde17c80600 Mon Sep 17 00:00:00 2001 From: Artem Chikin Date: Tue, 26 Sep 2023 13:54:51 -0700 Subject: [PATCH] [Dependency Scanning ]Revert: Remove Swift Overlay dependencies from the set of direct dependencies --- .../DependencyScan/ModuleDependencyScanner.h | 3 ++- lib/DependencyScan/ModuleDependencyScanner.cpp | 18 +++++++++++++++--- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/include/swift/DependencyScan/ModuleDependencyScanner.h b/include/swift/DependencyScan/ModuleDependencyScanner.h index dcb60481d1853..56bbeb6f0e853 100644 --- a/include/swift/DependencyScan/ModuleDependencyScanner.h +++ b/include/swift/DependencyScan/ModuleDependencyScanner.h @@ -120,7 +120,8 @@ class ModuleDependencyScanner { const ModuleDependencyID &moduleID, const std::vector &clangDependencies, ModuleDependenciesCache &cache, - ModuleDependencyIDSetVector &swiftOverlayDependencies); + ModuleDependencyIDSetVector &swiftOverlayDependencies, + ModuleDependencyIDSetVector &directDependencies); /// Identify all cross-import overlay modules of the specified /// dependency set and apply an action for each. diff --git a/lib/DependencyScan/ModuleDependencyScanner.cpp b/lib/DependencyScan/ModuleDependencyScanner.cpp index ef2aa3a919ed4..c2cb32825ba21 100644 --- a/lib/DependencyScan/ModuleDependencyScanner.cpp +++ b/lib/DependencyScan/ModuleDependencyScanner.cpp @@ -519,7 +519,7 @@ ModuleDependencyScanner::resolveDirectModuleDependencies( // Find all Swift overlays that this module depends on. resolveSwiftOverlayDependencies(moduleID, allClangModules, cache, - swiftOverlayDependencies); + swiftOverlayDependencies, directDependencies); // Resolve the dependency info with dependency module information. cache.resolveDependencyImports(moduleID, directDependencies.getArrayRef()); @@ -674,7 +674,8 @@ void ModuleDependencyScanner::resolveSwiftOverlayDependencies( const ModuleDependencyID &moduleID, const std::vector &clangDependencies, ModuleDependenciesCache &cache, - ModuleDependencyIDSetVector &swiftOverlayDependencies) { + ModuleDependencyIDSetVector &swiftOverlayDependencies, + ModuleDependencyIDSetVector &directDependencies) { llvm::StringMap> swiftOverlayLookupResult; for (const auto &clangDep : clangDependencies) @@ -705,18 +706,29 @@ void ModuleDependencyScanner::resolveSwiftOverlayDependencies( // Aggregate both previously-cached and freshly-scanned module results auto recordResult = [&cache, &swiftOverlayLookupResult, &swiftOverlayDependencies, + &directDependencies, moduleID](const std::string &moduleName) { auto lookupResult = swiftOverlayLookupResult[moduleName]; if (moduleName != moduleID.ModuleName) { if (lookupResult == llvm::None) { const ModuleDependencyInfo *cachedInfo = cache.findDependency(moduleName).value(); swiftOverlayDependencies.insert({moduleName, cachedInfo->getKind()}); + // FIXME: Once all clients know to fetch these dependencies from + // `swiftOverlayDependencies`, the goal is to no longer have them in + // `directDependencies` so the following will need to go away. + directDependencies.insert({moduleName, cachedInfo->getKind()}); } else { // Cache discovered module dependencies. cache.recordDependencies(lookupResult.value()); - if (!lookupResult.value().empty()) + if (!lookupResult.value().empty()) { swiftOverlayDependencies.insert( {moduleName, lookupResult.value()[0].first.Kind}); + // FIXME: Once all clients know to fetch these dependencies from + // `swiftOverlayDependencies`, the goal is to no longer have them in + // `directDependencies` so the following will need to go away. + directDependencies.insert( + {moduleName, lookupResult.value()[0].first.Kind}); + } } } };