[PATCH] D137104: [clangd] Add scoped enum constants to all-scopes-completion
Tom Praschan via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Nov 2 04:56:45 PDT 2022
tom-anders updated this revision to Diff 472578.
tom-anders marked an inline comment as done.
tom-anders added a comment.
Actually fix test...
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D137104/new/
https://reviews.llvm.org/D137104
Files:
clang-tools-extra/clangd/CodeComplete.cpp
clang-tools-extra/clangd/CodeComplete.h
clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp
clang-tools-extra/clangd/unittests/SymbolCollectorTests.cpp
Index: clang-tools-extra/clangd/unittests/SymbolCollectorTests.cpp
===================================================================
--- clang-tools-extra/clangd/unittests/SymbolCollectorTests.cpp
+++ clang-tools-extra/clangd/unittests/SymbolCollectorTests.cpp
@@ -1329,7 +1329,7 @@
AllOf(qName("Color"), forCodeCompletion(true)),
AllOf(qName("Green"), forCodeCompletion(true)),
AllOf(qName("Color2"), forCodeCompletion(true)),
- AllOf(qName("Color2::Yellow"), forCodeCompletion(false)),
+ AllOf(qName("Color2::Yellow"), forCodeCompletion(true)),
AllOf(qName("ns"), forCodeCompletion(true)),
AllOf(qName("ns::Black"), forCodeCompletion(true)),
AllOf(qName("Color3"), forCodeCompletion(true)),
Index: clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp
===================================================================
--- clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp
+++ clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp
@@ -3382,11 +3382,13 @@
Opts.Index = Index.get();
Opts.AllScopes = true;
auto R = completions(Source, {}, Opts);
- EXPECT_THAT(R.Completions,
- ElementsAre(AllOf(scope("ns::"), named("Clangd1"),
- kind(CompletionItemKind::EnumMember)),
- AllOf(scope("ns::C::"), named("Clangd2"),
- kind(CompletionItemKind::EnumMember))));
+ EXPECT_THAT(R.Completions, UnorderedElementsAre(
+ AllOf(scope("ns::"), named("Clangd1"),
+ kind(CompletionItemKind::EnumMember)),
+ AllOf(scope("ns::C::"), named("Clangd2"),
+ kind(CompletionItemKind::EnumMember)),
+ AllOf(scope("ns::Scoped::"), named("Clangd3"),
+ kind(CompletionItemKind::EnumMember))));
}
TEST(CompletionTest, ScopeIsUnresolved) {
Index: clang-tools-extra/clangd/CodeComplete.h
===================================================================
--- clang-tools-extra/clangd/CodeComplete.h
+++ clang-tools-extra/clangd/CodeComplete.h
@@ -291,7 +291,7 @@
// For index-based completion, we only consider:
// * symbols in namespaces or translation unit scopes (e.g. no class
// members, no locals)
-// * enum constants in unscoped enum decl (e.g. "red" in "enum {red};")
+// * enum constants (both scoped and unscoped)
// * primary templates (no specializations)
// For the other cases, we let Clang do the completion because it does not
// need any non-local information and it will be much better at following
Index: clang-tools-extra/clangd/CodeComplete.cpp
===================================================================
--- clang-tools-extra/clangd/CodeComplete.cpp
+++ clang-tools-extra/clangd/CodeComplete.cpp
@@ -2145,7 +2145,7 @@
// when
// --all-scopes-completion is set, we'll want to complete those as well.
if (const auto *EnumDecl = dyn_cast<clang::EnumDecl>(ND.getDeclContext()))
- return (InTopLevelScope(*EnumDecl) || InClassScope(*EnumDecl)) && !EnumDecl->isScoped();
+ return (InTopLevelScope(*EnumDecl) || InClassScope(*EnumDecl));
return false;
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D137104.472578.patch
Type: text/x-patch
Size: 3376 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20221102/8253faca/attachment.bin>
More information about the cfe-commits
mailing list