@@ -179,7 +179,7 @@ ModuleDependencyScanningWorker::ModuleDependencyScanningWorker(
179179
180180ModuleDependencyVector
181181ModuleDependencyScanningWorker::scanFilesystemForModuleDependency (
182- StringRef moduleName, const ModuleDependenciesCache &cache,
182+ Identifier moduleName, const ModuleDependenciesCache &cache,
183183 bool isTestableImport) {
184184 // First query a Swift module, otherwise lookup a Clang module
185185 ModuleDependencyVector moduleDependencies =
@@ -203,7 +203,7 @@ ModuleDependencyScanningWorker::scanFilesystemForModuleDependency(
203203
204204ModuleDependencyVector
205205ModuleDependencyScanningWorker::scanFilesystemForSwiftModuleDependency (
206- StringRef moduleName, const ModuleDependenciesCache &cache) {
206+ Identifier moduleName, const ModuleDependenciesCache &cache) {
207207 return swiftScannerModuleLoader->getModuleDependencies (
208208 moduleName, cache.getModuleOutputPath (),
209209 cache.getScanService ().getCachingFS (), cache.getAlreadySeenClangModules (),
@@ -213,7 +213,7 @@ ModuleDependencyScanningWorker::scanFilesystemForSwiftModuleDependency(
213213
214214ModuleDependencyVector
215215ModuleDependencyScanningWorker::scanFilesystemForClangModuleDependency (
216- StringRef moduleName, const ModuleDependenciesCache &cache) {
216+ Identifier moduleName, const ModuleDependenciesCache &cache) {
217217 return clangScannerModuleLoader->getModuleDependencies (
218218 moduleName, cache.getModuleOutputPath (),
219219 cache.getScanService ().getCachingFS (), cache.getAlreadySeenClangModules (),
@@ -252,6 +252,10 @@ auto ModuleDependencyScanner::withDependencyScanningWorker(Function &&F,
252252 return result;
253253}
254254
255+ Identifier ModuleDependencyScanner::getModuleImportIdentifier (StringRef moduleName) {
256+ return ScanASTContext.getIdentifier (moduleName);
257+ }
258+
255259ModuleDependencyScanner::ModuleDependencyScanner (
256260 SwiftDependencyScanningService &ScanningService,
257261 const CompilerInvocation &ScanCompilerInvocation,
@@ -443,10 +447,11 @@ ModuleDependencyScanner::getNamedClangModuleDependencyInfo(
443447 return found;
444448
445449 // Otherwise perform filesystem scan
450+ auto moduleIdentifier = getModuleImportIdentifier (moduleName);
446451 auto moduleDependencies = withDependencyScanningWorker (
447- [&cache, moduleName ](ModuleDependencyScanningWorker *ScanningWorker) {
452+ [&cache, moduleIdentifier ](ModuleDependencyScanningWorker *ScanningWorker) {
448453 return ScanningWorker->scanFilesystemForClangModuleDependency (
449- moduleName , cache);
454+ moduleIdentifier , cache);
450455 });
451456 if (moduleDependencies.empty ())
452457 return llvm::None;
@@ -474,10 +479,11 @@ ModuleDependencyScanner::getNamedSwiftModuleDependencyInfo(
474479 return found;
475480
476481 // Otherwise perform filesystem scan
482+ auto moduleIdentifier = getModuleImportIdentifier (moduleName);
477483 auto moduleDependencies = withDependencyScanningWorker (
478- [&cache, moduleName ](ModuleDependencyScanningWorker *ScanningWorker) {
484+ [&cache, moduleIdentifier ](ModuleDependencyScanningWorker *ScanningWorker) {
479485 return ScanningWorker->scanFilesystemForSwiftModuleDependency (
480- moduleName , cache);
486+ moduleIdentifier , cache);
481487 });
482488 if (moduleDependencies.empty ())
483489 return llvm::None;
@@ -552,8 +558,9 @@ void ModuleDependencyScanner::resolveImportDependencies(
552558 // A scanning task to query a module by-name. If the module already exists
553559 // in the cache, do nothing and return.
554560 auto scanForModuleDependency = [this , &cache, &moduleLookupResult](
555- StringRef moduleName , bool onlyClangModule,
561+ Identifier moduleIdentifier , bool onlyClangModule,
556562 bool isTestable) {
563+ auto moduleName = moduleIdentifier.str ();
557564 // If this is already in the cache, no work to do here
558565 if (onlyClangModule) {
559566 if (cache.hasDependency (moduleName, ModuleDependencyKind::Clang))
@@ -564,13 +571,13 @@ void ModuleDependencyScanner::resolveImportDependencies(
564571 }
565572
566573 auto moduleDependencies = withDependencyScanningWorker (
567- [&cache, moduleName , onlyClangModule,
574+ [&cache, moduleIdentifier , onlyClangModule,
568575 isTestable](ModuleDependencyScanningWorker *ScanningWorker) {
569576 return onlyClangModule
570577 ? ScanningWorker->scanFilesystemForClangModuleDependency (
571- moduleName , cache)
578+ moduleIdentifier , cache)
572579 : ScanningWorker->scanFilesystemForModuleDependency (
573- moduleName , cache, isTestable);
580+ moduleIdentifier , cache, isTestable);
574581 });
575582 moduleLookupResult.insert_or_assign (moduleName, moduleDependencies);
576583 };
@@ -579,14 +586,14 @@ void ModuleDependencyScanner::resolveImportDependencies(
579586 for (const auto &dependsOn : moduleDependencyInfo->getModuleImports ()) {
580587 bool underlyingClangModuleLookup = moduleID.ModuleName == dependsOn;
581588 bool isTestable = moduleDependencyInfo->isTestableImport (dependsOn);
582- ScanningThreadPool.async (scanForModuleDependency, dependsOn,
589+ ScanningThreadPool.async (scanForModuleDependency, getModuleImportIdentifier ( dependsOn) ,
583590 underlyingClangModuleLookup, isTestable);
584591 }
585592 for (const auto &dependsOn :
586593 moduleDependencyInfo->getOptionalModuleImports ()) {
587594 bool underlyingClangModuleLookup = moduleID.ModuleName == dependsOn;
588595 bool isTestable = moduleDependencyInfo->isTestableImport (dependsOn);
589- ScanningThreadPool.async (scanForModuleDependency, dependsOn,
596+ ScanningThreadPool.async (scanForModuleDependency, getModuleImportIdentifier ( dependsOn) ,
590597 underlyingClangModuleLookup, isTestable);
591598 }
592599 ScanningThreadPool.wait ();
@@ -726,23 +733,24 @@ void ModuleDependencyScanner::resolveSwiftOverlayDependencies(
726733 // A scanning task to query a Swift module by-name. If the module already
727734 // exists in the cache, do nothing and return.
728735 auto scanForSwiftDependency = [this , &cache, &swiftOverlayLookupResult](
729- StringRef moduleName) {
736+ Identifier moduleIdentifier) {
737+ auto moduleName = moduleIdentifier.str ();
730738 if (cache.hasDependency (moduleName, ModuleDependencyKind::SwiftInterface) ||
731739 cache.hasDependency (moduleName, ModuleDependencyKind::SwiftBinary) ||
732740 cache.hasDependency (moduleName, ModuleDependencyKind::SwiftPlaceholder))
733741 return ;
734742
735743 auto moduleDependencies = withDependencyScanningWorker (
736- [&cache, moduleName ](ModuleDependencyScanningWorker *ScanningWorker) {
737- return ScanningWorker->scanFilesystemForSwiftModuleDependency (moduleName ,
744+ [&cache, moduleIdentifier ](ModuleDependencyScanningWorker *ScanningWorker) {
745+ return ScanningWorker->scanFilesystemForSwiftModuleDependency (moduleIdentifier ,
738746 cache);
739747 });
740748 swiftOverlayLookupResult.insert_or_assign (moduleName, moduleDependencies);
741749 };
742750
743751 // Enque asynchronous lookup tasks
744752 for (const auto &clangDep : clangDependencies)
745- ScanningThreadPool.async (scanForSwiftDependency, clangDep);
753+ ScanningThreadPool.async (scanForSwiftDependency, getModuleImportIdentifier ( clangDep) );
746754 ScanningThreadPool.wait ();
747755
748756 // Aggregate both previously-cached and freshly-scanned module results
0 commit comments