diff --git a/clang-tools-extra/clangd/CodeComplete.cpp b/clang-tools-extra/clangd/CodeComplete.cpp --- a/clang-tools-extra/clangd/CodeComplete.cpp +++ b/clang-tools-extra/clangd/CodeComplete.cpp @@ -87,9 +87,8 @@ return CompletionItemKind::Text; case SK::Enum: return CompletionItemKind::Enum; - // FIXME(ioeric): use LSP struct instead of class when it is suppoted in the - // protocol. case SK::Struct: + return CompletionItemKind::Struct; case SK::Class: case SK::Protocol: case SK::Extension: @@ -102,8 +101,6 @@ case SK::Using: return CompletionItemKind::Reference; case SK::Function: - // FIXME(ioeric): this should probably be an operator. This should be fixed - // when `Operator` is support type in the protocol. case SK::ConversionFunction: return CompletionItemKind::Function; case SK::Variable: @@ -112,9 +109,8 @@ return CompletionItemKind::Variable; case SK::Field: return CompletionItemKind::Field; - // FIXME(ioeric): use LSP enum constant when it is supported in the protocol. case SK::EnumConstant: - return CompletionItemKind::Value; + return CompletionItemKind::EnumMember; case SK::InstanceMethod: case SK::ClassMethod: case SK::StaticMethod: diff --git a/clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp b/clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp --- a/clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp +++ b/clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp @@ -481,7 +481,7 @@ AllOf(Has("function", CompletionItemKind::Function), Has("variable", CompletionItemKind::Variable), Has("int", CompletionItemKind::Keyword), - Has("Struct", CompletionItemKind::Class), + Has("Struct", CompletionItemKind::Struct), Has("MACRO", CompletionItemKind::Text), Has("indexFunction", CompletionItemKind::Function), Has("indexVariable", CompletionItemKind::Variable), @@ -529,6 +529,17 @@ AllOf(Named("complete_variable"), Kind(CompletionItemKind::Variable)), AllOf(Named("complete_static_member"), Kind(CompletionItemKind::Property)))); + + Results = completions( + R"cpp( + enum Color { + Red + }; + Color u = ^ + )cpp"); + EXPECT_THAT(Results.Completions, + Contains( + AllOf(Named("Red"), Kind(CompletionItemKind::EnumMember)))); } TEST(CompletionTest, NoDuplicates) {