@@ -179,7 +179,7 @@ ModuleDependencyScanningWorker::ModuleDependencyScanningWorker(
179
179
180
180
ModuleDependencyVector
181
181
ModuleDependencyScanningWorker::scanFilesystemForModuleDependency (
182
- StringRef moduleName, const ModuleDependenciesCache &cache,
182
+ Identifier moduleName, const ModuleDependenciesCache &cache,
183
183
bool isTestableImport) {
184
184
// First query a Swift module, otherwise lookup a Clang module
185
185
ModuleDependencyVector moduleDependencies =
@@ -203,7 +203,7 @@ ModuleDependencyScanningWorker::scanFilesystemForModuleDependency(
203
203
204
204
ModuleDependencyVector
205
205
ModuleDependencyScanningWorker::scanFilesystemForSwiftModuleDependency (
206
- StringRef moduleName, const ModuleDependenciesCache &cache) {
206
+ Identifier moduleName, const ModuleDependenciesCache &cache) {
207
207
return swiftScannerModuleLoader->getModuleDependencies (
208
208
moduleName, cache.getModuleOutputPath (),
209
209
cache.getScanService ().getCachingFS (), cache.getAlreadySeenClangModules (),
@@ -213,7 +213,7 @@ ModuleDependencyScanningWorker::scanFilesystemForSwiftModuleDependency(
213
213
214
214
ModuleDependencyVector
215
215
ModuleDependencyScanningWorker::scanFilesystemForClangModuleDependency (
216
- StringRef moduleName, const ModuleDependenciesCache &cache) {
216
+ Identifier moduleName, const ModuleDependenciesCache &cache) {
217
217
return clangScannerModuleLoader->getModuleDependencies (
218
218
moduleName, cache.getModuleOutputPath (),
219
219
cache.getScanService ().getCachingFS (), cache.getAlreadySeenClangModules (),
@@ -252,6 +252,10 @@ auto ModuleDependencyScanner::withDependencyScanningWorker(Function &&F,
252
252
return result;
253
253
}
254
254
255
+ Identifier ModuleDependencyScanner::getModuleImportIdentifier (StringRef moduleName) {
256
+ return ScanASTContext.getIdentifier (moduleName);
257
+ }
258
+
255
259
ModuleDependencyScanner::ModuleDependencyScanner (
256
260
SwiftDependencyScanningService &ScanningService,
257
261
const CompilerInvocation &ScanCompilerInvocation,
@@ -443,10 +447,11 @@ ModuleDependencyScanner::getNamedClangModuleDependencyInfo(
443
447
return found;
444
448
445
449
// Otherwise perform filesystem scan
450
+ auto moduleIdentifier = getModuleImportIdentifier (moduleName);
446
451
auto moduleDependencies = withDependencyScanningWorker (
447
- [&cache, moduleName ](ModuleDependencyScanningWorker *ScanningWorker) {
452
+ [&cache, moduleIdentifier ](ModuleDependencyScanningWorker *ScanningWorker) {
448
453
return ScanningWorker->scanFilesystemForClangModuleDependency (
449
- moduleName , cache);
454
+ moduleIdentifier , cache);
450
455
});
451
456
if (moduleDependencies.empty ())
452
457
return llvm::None;
@@ -474,10 +479,11 @@ ModuleDependencyScanner::getNamedSwiftModuleDependencyInfo(
474
479
return found;
475
480
476
481
// Otherwise perform filesystem scan
482
+ auto moduleIdentifier = getModuleImportIdentifier (moduleName);
477
483
auto moduleDependencies = withDependencyScanningWorker (
478
- [&cache, moduleName ](ModuleDependencyScanningWorker *ScanningWorker) {
484
+ [&cache, moduleIdentifier ](ModuleDependencyScanningWorker *ScanningWorker) {
479
485
return ScanningWorker->scanFilesystemForSwiftModuleDependency (
480
- moduleName , cache);
486
+ moduleIdentifier , cache);
481
487
});
482
488
if (moduleDependencies.empty ())
483
489
return llvm::None;
@@ -552,8 +558,9 @@ void ModuleDependencyScanner::resolveImportDependencies(
552
558
// A scanning task to query a module by-name. If the module already exists
553
559
// in the cache, do nothing and return.
554
560
auto scanForModuleDependency = [this , &cache, &moduleLookupResult](
555
- StringRef moduleName , bool onlyClangModule,
561
+ Identifier moduleIdentifier , bool onlyClangModule,
556
562
bool isTestable) {
563
+ auto moduleName = moduleIdentifier.str ();
557
564
// If this is already in the cache, no work to do here
558
565
if (onlyClangModule) {
559
566
if (cache.hasDependency (moduleName, ModuleDependencyKind::Clang))
@@ -564,13 +571,13 @@ void ModuleDependencyScanner::resolveImportDependencies(
564
571
}
565
572
566
573
auto moduleDependencies = withDependencyScanningWorker (
567
- [&cache, moduleName , onlyClangModule,
574
+ [&cache, moduleIdentifier , onlyClangModule,
568
575
isTestable](ModuleDependencyScanningWorker *ScanningWorker) {
569
576
return onlyClangModule
570
577
? ScanningWorker->scanFilesystemForClangModuleDependency (
571
- moduleName , cache)
578
+ moduleIdentifier , cache)
572
579
: ScanningWorker->scanFilesystemForModuleDependency (
573
- moduleName , cache, isTestable);
580
+ moduleIdentifier , cache, isTestable);
574
581
});
575
582
moduleLookupResult.insert_or_assign (moduleName, moduleDependencies);
576
583
};
@@ -579,14 +586,14 @@ void ModuleDependencyScanner::resolveImportDependencies(
579
586
for (const auto &dependsOn : moduleDependencyInfo->getModuleImports ()) {
580
587
bool underlyingClangModuleLookup = moduleID.ModuleName == dependsOn;
581
588
bool isTestable = moduleDependencyInfo->isTestableImport (dependsOn);
582
- ScanningThreadPool.async (scanForModuleDependency, dependsOn,
589
+ ScanningThreadPool.async (scanForModuleDependency, getModuleImportIdentifier ( dependsOn) ,
583
590
underlyingClangModuleLookup, isTestable);
584
591
}
585
592
for (const auto &dependsOn :
586
593
moduleDependencyInfo->getOptionalModuleImports ()) {
587
594
bool underlyingClangModuleLookup = moduleID.ModuleName == dependsOn;
588
595
bool isTestable = moduleDependencyInfo->isTestableImport (dependsOn);
589
- ScanningThreadPool.async (scanForModuleDependency, dependsOn,
596
+ ScanningThreadPool.async (scanForModuleDependency, getModuleImportIdentifier ( dependsOn) ,
590
597
underlyingClangModuleLookup, isTestable);
591
598
}
592
599
ScanningThreadPool.wait ();
@@ -726,23 +733,24 @@ void ModuleDependencyScanner::resolveSwiftOverlayDependencies(
726
733
// A scanning task to query a Swift module by-name. If the module already
727
734
// exists in the cache, do nothing and return.
728
735
auto scanForSwiftDependency = [this , &cache, &swiftOverlayLookupResult](
729
- StringRef moduleName) {
736
+ Identifier moduleIdentifier) {
737
+ auto moduleName = moduleIdentifier.str ();
730
738
if (cache.hasDependency (moduleName, ModuleDependencyKind::SwiftInterface) ||
731
739
cache.hasDependency (moduleName, ModuleDependencyKind::SwiftBinary) ||
732
740
cache.hasDependency (moduleName, ModuleDependencyKind::SwiftPlaceholder))
733
741
return ;
734
742
735
743
auto moduleDependencies = withDependencyScanningWorker (
736
- [&cache, moduleName ](ModuleDependencyScanningWorker *ScanningWorker) {
737
- return ScanningWorker->scanFilesystemForSwiftModuleDependency (moduleName ,
744
+ [&cache, moduleIdentifier ](ModuleDependencyScanningWorker *ScanningWorker) {
745
+ return ScanningWorker->scanFilesystemForSwiftModuleDependency (moduleIdentifier ,
738
746
cache);
739
747
});
740
748
swiftOverlayLookupResult.insert_or_assign (moduleName, moduleDependencies);
741
749
};
742
750
743
751
// Enque asynchronous lookup tasks
744
752
for (const auto &clangDep : clangDependencies)
745
- ScanningThreadPool.async (scanForSwiftDependency, clangDep);
753
+ ScanningThreadPool.async (scanForSwiftDependency, getModuleImportIdentifier ( clangDep) );
746
754
ScanningThreadPool.wait ();
747
755
748
756
// Aggregate both previously-cached and freshly-scanned module results
0 commit comments