@@ -550,7 +550,7 @@ std::error_code ImplicitSerializedModuleLoader::findModuleFilesInDirectory(
550550 std::unique_ptr<llvm::MemoryBuffer> *ModuleBuffer,
551551 std::unique_ptr<llvm::MemoryBuffer> *ModuleDocBuffer,
552552 std::unique_ptr<llvm::MemoryBuffer> *ModuleSourceInfoBuffer,
553- bool skipBuildingInterface , bool IsFramework, bool IsTestableDependencyLookup) {
553+ bool IsCanImportLookup , bool IsFramework, bool IsTestableDependencyLookup) {
554554 if (LoadMode == ModuleLoadingMode::OnlyInterface ||
555555 Ctx.IgnoreAdjacentModules )
556556 return std::make_error_code (std::errc::not_supported);
@@ -579,7 +579,8 @@ std::error_code ImplicitSerializedModuleLoader::findModuleFilesInDirectory(
579579
580580bool ImplicitSerializedModuleLoader::maybeDiagnoseTargetMismatch (
581581 SourceLoc sourceLocation, StringRef moduleName,
582- const SerializedModuleBaseName &absoluteBaseName) {
582+ const SerializedModuleBaseName &absoluteBaseName,
583+ bool isCanImportLookup) {
583584 llvm::vfs::FileSystem &fs = *Ctx.SourceMgr .getFileSystem ();
584585
585586 // Get the last component of the base name, which is the target-specific one.
@@ -614,9 +615,11 @@ bool ImplicitSerializedModuleLoader::maybeDiagnoseTargetMismatch(
614615 return false ;
615616 }
616617
617- Ctx.Diags .diagnose (sourceLocation, diag::sema_no_import_target, moduleName,
618- target, foundArchs, dir);
619- return true ;
618+ Ctx.Diags
619+ .diagnose (sourceLocation, diag::sema_no_import_target, moduleName, target,
620+ foundArchs, dir)
621+ .limitBehaviorIf (isCanImportLookup, DiagnosticBehavior::Warning);
622+ return !isCanImportLookup;
620623}
621624
622625SerializedModuleBaseName::SerializedModuleBaseName (
@@ -720,7 +723,7 @@ bool SerializedModuleLoaderBase::findModule(
720723 std::unique_ptr<llvm::MemoryBuffer> *moduleBuffer,
721724 std::unique_ptr<llvm::MemoryBuffer> *moduleDocBuffer,
722725 std::unique_ptr<llvm::MemoryBuffer> *moduleSourceInfoBuffer,
723- bool skipBuildingInterface , bool isTestableDependencyLookup,
726+ bool isCanImportLookup , bool isTestableDependencyLookup,
724727 bool &isFramework, bool &isSystemModule) {
725728 // Find a module with an actual, physical name on disk, in case
726729 // -module-alias is used (otherwise same).
@@ -766,7 +769,7 @@ bool SerializedModuleLoaderBase::findModule(
766769 auto result = findModuleFilesInDirectory (
767770 moduleID, absoluteBaseName, moduleInterfacePath,
768771 moduleInterfaceSourcePath, moduleBuffer, moduleDocBuffer,
769- moduleSourceInfoBuffer, skipBuildingInterface , IsFramework,
772+ moduleSourceInfoBuffer, isCanImportLookup , IsFramework,
770773 isTestableDependencyLookup);
771774 if (!result)
772775 return SearchResult::Found;
@@ -780,7 +783,7 @@ bool SerializedModuleLoaderBase::findModule(
780783 // 'std::errc::no_such_file_or_directory'.
781784 if (firstAbsoluteBaseName &&
782785 maybeDiagnoseTargetMismatch (moduleID.Loc , moduleName,
783- *firstAbsoluteBaseName))
786+ *firstAbsoluteBaseName, isCanImportLookup ))
784787 return SearchResult::Error;
785788
786789 return SearchResult::NotFound;
@@ -838,7 +841,7 @@ bool SerializedModuleLoaderBase::findModule(
838841 auto result = findModuleFilesInDirectory (
839842 moduleID, absoluteBaseName, moduleInterfacePath,
840843 moduleInterfaceSourcePath, moduleBuffer, moduleDocBuffer,
841- moduleSourceInfoBuffer, skipBuildingInterface , isFramework,
844+ moduleSourceInfoBuffer, isCanImportLookup , isFramework,
842845 isTestableDependencyLookup);
843846 if (!result)
844847 return true ;
@@ -1512,7 +1515,7 @@ bool SerializedModuleLoaderBase::canImportModule(
15121515 mID , /* moduleInterfacePath=*/ nullptr , &moduleInterfaceSourcePath,
15131516 &moduleInputBuffer,
15141517 /* moduleDocBuffer=*/ nullptr , /* moduleSourceInfoBuffer=*/ nullptr ,
1515- /* skipBuildingInterface =*/ true , isTestableDependencyLookup,
1518+ /* isCanImportLookup =*/ true , isTestableDependencyLookup,
15161519 isFramework, isSystemModule);
15171520 // If we cannot find the module, don't continue.
15181521 if (!found)
@@ -1607,7 +1610,7 @@ SerializedModuleLoaderBase::loadModule(SourceLoc importLoc,
16071610 if (!findModule (moduleID, &moduleInterfacePath, &moduleInterfaceSourcePath,
16081611 &moduleInputBuffer, &moduleDocInputBuffer,
16091612 &moduleSourceInfoInputBuffer,
1610- /* skipBuildingInterface =*/ false ,
1613+ /* isCanImportLookup =*/ false ,
16111614 /* isTestableDependencyLookup=*/ false ,
16121615 isFramework,
16131616 isSystemModule)) {
@@ -1747,7 +1750,7 @@ std::error_code MemoryBufferSerializedModuleLoader::findModuleFilesInDirectory(
17471750 std::unique_ptr<llvm::MemoryBuffer> *ModuleBuffer,
17481751 std::unique_ptr<llvm::MemoryBuffer> *ModuleDocBuffer,
17491752 std::unique_ptr<llvm::MemoryBuffer> *ModuleSourceInfoBuffer,
1750- bool skipBuildingInterface , bool IsFramework,
1753+ bool isCanImportLookup , bool IsFramework,
17511754 bool isTestableDependencyLookup) {
17521755 // This is a soft error instead of an llvm_unreachable because this API is
17531756 // primarily used by LLDB which makes it more likely that unwitting changes to
@@ -1756,12 +1759,6 @@ std::error_code MemoryBufferSerializedModuleLoader::findModuleFilesInDirectory(
17561759 return std::make_error_code (std::errc::not_supported);
17571760}
17581761
1759- bool MemoryBufferSerializedModuleLoader::maybeDiagnoseTargetMismatch (
1760- SourceLoc sourceLocation, StringRef moduleName,
1761- const SerializedModuleBaseName &absoluteBaseName) {
1762- return false ;
1763- }
1764-
17651762void SerializedModuleLoaderBase::verifyAllModules () {
17661763#ifndef NDEBUG
17671764 for (const LoadedModulePair &loaded : LoadedModuleFiles)
0 commit comments