diff --git a/clang-tools-extra/clangd/CodeComplete.cpp b/clang-tools-extra/clangd/CodeComplete.cpp index f7c6f105cb9ae4b89063ea95036657e254933e18..3fbf98970cceb656d391134501628bfadb1b6472 100644 --- a/clang-tools-extra/clangd/CodeComplete.cpp +++ b/clang-tools-extra/clangd/CodeComplete.cpp @@ -87,9 +87,8 @@ CompletionItemKind toCompletionItemKind(index::SymbolKind Kind) { 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 @@ CompletionItemKind toCompletionItemKind(index::SymbolKind Kind) { 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 @@ CompletionItemKind toCompletionItemKind(index::SymbolKind Kind) { 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 index a39c7431044f45b06fb9f6f2a8f08340f218ef2c..f9ffe1167338049cbca7e68363b14a905d450c0a 100644 --- a/clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp +++ b/clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp @@ -481,7 +481,7 @@ TEST(CompletionTest, Kinds) { 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 @@ TEST(CompletionTest, Kinds) { 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) {