@@ -296,6 +296,15 @@ ModuleDependencyScanningWorker::ModuleDependencyScanningWorker(
296296 workerCompilerInvocation->getSearchPathOptions ().ExplicitSwiftModuleInputs );
297297}
298298
299+ llvm::Error ModuleDependencyScanningWorker::initializeClangScanningTool () {
300+ return clangScanningTool.initializeCompilerInstanceWithContext (
301+ clangScanningWorkingDirectoryPath, clangScanningModuleCommandLineArgs);
302+ }
303+
304+ llvm::Error ModuleDependencyScanningWorker::finalizeClangScanningTool () {
305+ return clangScanningTool.finalizeCompilerInstanceWithContext ();
306+ }
307+
299308SwiftModuleScannerQueryResult
300309ModuleDependencyScanningWorker::scanFilesystemForSwiftModuleDependency (
301310 Identifier moduleName, bool isTestableImport) {
@@ -309,18 +318,23 @@ ModuleDependencyScanningWorker::scanFilesystemForClangModuleDependency(
309318 LookupModuleOutputCallback lookupModuleOutput,
310319 const llvm::DenseSet<clang::tooling::dependencies::ModuleID>
311320 &alreadySeenModules) {
312- auto clangModuleDependencies = clangScanningTool.getModuleDependencies (
313- moduleName.str (), clangScanningModuleCommandLineArgs,
314- clangScanningWorkingDirectoryPath, alreadySeenModules,
315- lookupModuleOutput);
321+ // auto clangModuleDependencies = clangScanningTool.getModuleDependencies(
322+ // moduleName.str(), clangScanningModuleCommandLineArgs,
323+ // clangScanningWorkingDirectoryPath, alreadySeenModules,
324+ // lookupModuleOutput);
325+ auto clangModuleDependencies =
326+ clangScanningTool.computeDependenciesByNameWithContext (
327+ moduleName.str (), alreadySeenModules, lookupModuleOutput);
316328 if (!clangModuleDependencies) {
317- llvm::handleAllErrors (clangModuleDependencies.takeError (), [this , &moduleName](
318- const llvm::StringError &E) {
329+ llvm::handleAllErrors (
330+ clangModuleDependencies.takeError (),
331+ [this , &moduleName](const llvm::StringError &E) {
319332 auto &message = E.getMessage ();
320333 if (message.find (" fatal error: module '" + moduleName.str ().str () +
321- " ' not found" ) == std::string::npos)
322- workerDiagnosticEngine->diagnose (SourceLoc (), diag::clang_dependency_scan_error, message);
323- });
334+ " ' not found" ) == std::string::npos)
335+ workerDiagnosticEngine->diagnose (
336+ SourceLoc (), diag::clang_dependency_scan_error, message);
337+ });
324338 return std::nullopt ;
325339 }
326340
@@ -560,6 +574,22 @@ ModuleDependencyScanner::ModuleDependencyScanner(
560574 DependencyTracker, CAS, ActionCache, PrefixMapper.get (), Diagnostics));
561575}
562576
577+ llvm::Error ModuleDependencyScanner::initializeWorkerClangScanningTool () {
578+ for (auto &W : Workers) {
579+ if (auto error = W->initializeClangScanningTool ())
580+ return error;
581+ }
582+ return llvm::Error::success ();
583+ }
584+
585+ llvm::Error ModuleDependencyScanner::finalizeWorkerClangScanningTool () {
586+ for (auto &W : Workers) {
587+ if (auto error = W->finalizeClangScanningTool ())
588+ return error;
589+ }
590+ return llvm::Error::success ();
591+ }
592+
563593static std::set<ModuleDependencyID>
564594collectBinarySwiftDeps (const ModuleDependenciesCache &cache) {
565595 std::set<ModuleDependencyID> binarySwiftModuleDepIDs;
0 commit comments