diff --git a/plugins/clang/codecompletion/context.cpp b/plugins/clang/codecompletion/context.cpp --- a/plugins/clang/codecompletion/context.cpp +++ b/plugins/clang/codecompletion/context.cpp @@ -1035,7 +1035,7 @@ switch (kind) { case CXCompletionChunk_TypedText: typed = string; - replacement = string; + replacement += string; break; case CXCompletionChunk_ResultType: resultType = string; @@ -1062,6 +1062,9 @@ if (isOverloadCandidate) { typed += string; } + else if (result.CursorKind == CXCursor_EnumConstantDecl) { + replacement += string; + } break; case CXCompletionChunk_CurrentParameter: argumentRange.start = arguments.size(); diff --git a/plugins/clang/tests/test_codecompletion.cpp b/plugins/clang/tests/test_codecompletion.cpp --- a/plugins/clang/tests/test_codecompletion.cpp +++ b/plugins/clang/tests/test_codecompletion.cpp @@ -1354,6 +1354,12 @@ << CompletionItems({2, 0}, {"foo", "main"}) << "main" << "int foo();\nint main() {\nmain();\n}"; + + QTest::newRow("bug375635") + << "enum class Color {\nBlue, Green, Red, Yellow\n};\nvoid foo() {\nColor x;\nswitch (x) {\ncase : break;}\n}" + << CompletionItems({6, 5}, {"Blue", "Green", "Red", "Yellow"}) + << "Yellow" + << "enum class Color {\nBlue, Green, Red, Yellow\n};\nvoid foo() {\nColor x;\nswitch (x) {\ncase Color::Yellow: break;}\n}"; } void TestCodeCompletion::testIgnoreGccBuiltins()