@@ -1827,36 +1827,47 @@ class CompletionLookup final : public swift::VisibleDeclConsumer {
1827
1827
1828
1828
void addImportModuleNames () {
1829
1829
// 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 ;
1836
1851
});
1852
+
1837
1853
llvm::StringSet<> ImportedModules;
1838
1854
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);
1860
1871
}
1861
1872
}
1862
1873
0 commit comments