Skip to content

Commit 095623b

Browse files
authored
[code-complete] Small refactoring in addImportModuleNames (#15943)
Improves readability. In the future, we will fix "FIXME: Add user-defined swift modules" based on this.
1 parent a935f40 commit 095623b

File tree

1 file changed

+38
-27
lines changed

1 file changed

+38
-27
lines changed

lib/IDE/CodeCompletion.cpp

Lines changed: 38 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1827,36 +1827,47 @@ class CompletionLookup final : public swift::VisibleDeclConsumer {
18271827

18281828
void addImportModuleNames() {
18291829
// FIXME: Add user-defined swift modules
1830-
SmallVector<clang::Module*, 20> Modules;
1831-
Ctx.getVisibleTopLevelClangModules(Modules);
1832-
std::sort(Modules.begin(), Modules.end(),
1833-
[](clang::Module* LHS , clang::Module* RHS) {
1834-
return LHS->getTopLevelModuleName().compare_lower(
1835-
RHS->getTopLevelModuleName()) < 0;
1830+
SmallVector<StringRef, 20> ModuleNames;
1831+
1832+
// Collect clang module names.
1833+
{
1834+
SmallVector<clang::Module*, 20> ClangModules;
1835+
Ctx.getVisibleTopLevelClangModules(ClangModules);
1836+
for (auto *M : ClangModules) {
1837+
if (!M->isAvailable())
1838+
continue;
1839+
if (M->getTopLevelModuleName().startswith("_"))
1840+
continue;
1841+
if (M->getTopLevelModuleName() == Ctx.SwiftShimsModuleName.str())
1842+
continue;
1843+
1844+
ModuleNames.push_back(M->getTopLevelModuleName());
1845+
}
1846+
}
1847+
1848+
std::sort(ModuleNames.begin(), ModuleNames.end(),
1849+
[](StringRef LHS, StringRef RHS) {
1850+
return LHS.compare_lower(RHS) < 0;
18361851
});
1852+
18371853
llvm::StringSet<> ImportedModules;
18381854
collectImportedModules(ImportedModules);
1839-
for (auto *M : Modules) {
1840-
if (M->isAvailable() &&
1841-
!M->getTopLevelModuleName().startswith("_") &&
1842-
M->getTopLevelModuleName() != CurrDeclContext->getASTContext().
1843-
SwiftShimsModuleName.str()) {
1844-
auto MD = ModuleDecl::create(Ctx.getIdentifier(M->getTopLevelModuleName()),
1845-
Ctx);
1846-
CodeCompletionResultBuilder Builder(Sink,
1847-
CodeCompletionResult::ResultKind::
1848-
Declaration,
1849-
SemanticContextKind::OtherModule,
1850-
ExpectedTypes);
1851-
Builder.setAssociatedDecl(MD);
1852-
Builder.addTextChunk(MD->getNameStr());
1853-
Builder.addTypeAnnotation("Module");
1854-
1855-
// Imported modules are not recommended.
1856-
if (ImportedModules.count(MD->getNameStr()) != 0)
1857-
Builder.setNotRecommended(CodeCompletionResult::NotRecommendedReason::
1858-
Redundant);
1859-
}
1855+
1856+
for (auto ModuleName : ModuleNames) {
1857+
auto MD = ModuleDecl::create(Ctx.getIdentifier(ModuleName), Ctx);
1858+
CodeCompletionResultBuilder Builder(
1859+
Sink,
1860+
CodeCompletionResult::ResultKind::Declaration,
1861+
SemanticContextKind::OtherModule,
1862+
ExpectedTypes);
1863+
Builder.setAssociatedDecl(MD);
1864+
Builder.addTextChunk(MD->getNameStr());
1865+
Builder.addTypeAnnotation("Module");
1866+
1867+
// Imported modules are not recommended.
1868+
if (ImportedModules.count(MD->getNameStr()) != 0)
1869+
Builder.setNotRecommended(
1870+
CodeCompletionResult::NotRecommendedReason::Redundant);
18601871
}
18611872
}
18621873

0 commit comments

Comments
 (0)