Sema: fix getPublicModuleName to look only at loaded modules

When onlyIfImported is true, we should return the public module name
only when the public facing module is already imported. Replace the
call to getModuleByIdentifier with getLoadedModule to prevent trigering
loading that module.

Also fix the test where the CHECK lined ended up matching itself from
the diagnostics output.
This commit is contained in:
Alexis Laferrière
2024-09-11 13:11:32 -07:00
parent 9ce34ab8a0
commit f9a8a674c6
2 changed files with 6 additions and 8 deletions

View File

@@ -1923,15 +1923,11 @@ ImportedModule::removeDuplicates(SmallVectorImpl<ImportedModule> &imports) {
}
Identifier ModuleDecl::getPublicModuleName(bool onlyIfImported) const {
if (!PublicModuleName.empty()) {
if (!onlyIfImported)
return PublicModuleName;
if (!PublicModuleName.empty() &&
(!onlyIfImported ||
getASTContext().getLoadedModule(PublicModuleName)))
return PublicModuleName;
bool publicModuleIsImported =
getASTContext().getModuleByIdentifier(PublicModuleName);
if (publicModuleIsImported)
return PublicModuleName;
}
return getName();
}