[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [kdevelop] plugins/clang: Fix CodeCompletion of Strongly Typed Enum
From:       Aaron Puchert <null () kde ! org>
Date:       2018-02-26 22:12:58
Message-ID: E1eqR10-00029A-Fi () code ! kde ! org
[Download RAW message or body]

Git commit 1b0fe932941112f1bccf37713f052fc6028cbb89 by Aaron Puchert, on behalf of \
Shashwat Dixit. Committed on 26/02/2018 at 22:11.
Pushed by aaronpuchert into branch 'master'.

Fix CodeCompletion of Strongly Typed Enum

Summary: BUG: 375635

Reviewers: nalvarez, #kdevelop, kfunk, mwolff

Reviewed By: #kdevelop, mwolff

Subscribers: mwolff, kdevelop-devel

Tags: #kdevelop

Differential Revision: https://phabricator.kde.org/D10738

M  +4    -1    plugins/clang/codecompletion/context.cpp
M  +6    -0    plugins/clang/tests/test_codecompletion.cpp

https://commits.kde.org/kdevelop/1b0fe932941112f1bccf37713f052fc6028cbb89

diff --git a/plugins/clang/codecompletion/context.cpp \
b/plugins/clang/codecompletion/context.cpp index 2b3e8fc867..5be6f8cd0d 100644
--- a/plugins/clang/codecompletion/context.cpp
+++ b/plugins/clang/codecompletion/context.cpp
@@ -1035,7 +1035,7 @@ QList<CompletionTreeItemPointer> \
ClangCodeCompletionContext::completionItems(boo  switch (kind) {
                 case CXCompletionChunk_TypedText:
                     typed = string;
-                    replacement = string;
+                    replacement += string;
                     break;
                 case CXCompletionChunk_ResultType:
                     resultType = string;
@@ -1062,6 +1062,9 @@ QList<CompletionTreeItemPointer> \
ClangCodeCompletionContext::completionItems(boo  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 index d12ad5236b..3c946b738b 100644
--- a/plugins/clang/tests/test_codecompletion.cpp
+++ b/plugins/clang/tests/test_codecompletion.cpp
@@ -1354,6 +1354,12 @@ void TestCodeCompletion::testCompleteFunction_data()
         << 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()


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic