From 5b12ada2dccb16324186bf1944d4541fb34c5783 Mon Sep 17 00:00:00 2001 From: Nikolai Kosjar Date: Mon, 12 Nov 2018 12:39:35 +0100 Subject: Clang: Fix completion icon for members in member init list Change-Id: Ib02320dcf4de7cbb8ac6fbf29d1929edae77591a Reviewed-by: Ivan Donchevskii --- src/tools/clangbackend/source/codecompletionsextractor.cpp | 1 + tests/unit/unittest/codecompletionsextractor-test.cpp | 14 ++++++++++++++ .../complete_extractor_constructorMemberInitialization.cpp | 5 +++++ 3 files changed, 20 insertions(+) create mode 100644 tests/unit/unittest/data/complete_extractor_constructorMemberInitialization.cpp diff --git a/src/tools/clangbackend/source/codecompletionsextractor.cpp b/src/tools/clangbackend/source/codecompletionsextractor.cpp index b42520c7e5..065a589539 100644 --- a/src/tools/clangbackend/source/codecompletionsextractor.cpp +++ b/src/tools/clangbackend/source/codecompletionsextractor.cpp @@ -184,6 +184,7 @@ void CodeCompletionsExtractor::extractCompletionKind() currentCodeCompletion_.completionKind = CodeCompletion::FunctionCompletionKind; break; case CXCursor_VariableRef: + case CXCursor_MemberRef: case CXCursor_VarDecl: case CXCursor_FieldDecl: case CXCursor_ParmDecl: diff --git a/tests/unit/unittest/codecompletionsextractor-test.cpp b/tests/unit/unittest/codecompletionsextractor-test.cpp index 3e493ab44b..ae7559ce78 100644 --- a/tests/unit/unittest/codecompletionsextractor-test.cpp +++ b/tests/unit/unittest/codecompletionsextractor-test.cpp @@ -156,6 +156,7 @@ protected: Document namespaceDocument{Utf8StringLiteral(TESTDATA_DIR"/complete_extractor_namespace.cpp"), compilationArguments, {}, documents}; Document enumerationDocument{Utf8StringLiteral(TESTDATA_DIR"/complete_extractor_enumeration.cpp"), compilationArguments, {}, documents}; Document constructorDocument{Utf8StringLiteral(TESTDATA_DIR"/complete_extractor_constructor.cpp"), compilationArguments, {}, documents}; + Document constructorMemberInitDocument{Utf8StringLiteral(TESTDATA_DIR"/complete_extractor_constructorMemberInitialization.cpp"), compilationArguments, {}, documents}; Document briefCommentDocument{Utf8StringLiteral(TESTDATA_DIR"/complete_extractor_brief_comment.cpp"), compilationArguments, {}, documents}; }; @@ -435,6 +436,19 @@ TEST_F(CodeCompletionsExtractorSlowTest, Constructor) CodeCompletion::Available)); } +TEST_F(CodeCompletionsExtractorSlowTest, ConstructorMemberInitializer) { + ClangCodeCompleteResults completeResults(getResults(constructorMemberInitDocument, 2, 18)); + + ::CodeCompletionsExtractor extractor( + unsavedFiles.unsavedFile(constructorDocument.filePath()), + completeResults.data()); + + ASSERT_THAT(extractor, + HasCompletion(Utf8StringLiteral("member"), + CodeCompletion::VariableCompletionKind, + CodeCompletion::Available)); +} + TEST_F(CodeCompletionsExtractorSlowTest, Destructor) { ClangCodeCompleteResults completeResults(getResults(constructorDocument, 20)); diff --git a/tests/unit/unittest/data/complete_extractor_constructorMemberInitialization.cpp b/tests/unit/unittest/data/complete_extractor_constructorMemberInitialization.cpp new file mode 100644 index 0000000000..bbbe8ccfb8 --- /dev/null +++ b/tests/unit/unittest/data/complete_extractor_constructorMemberInitialization.cpp @@ -0,0 +1,5 @@ +class Constructor { + Constructor() : {} + + int member; +}; -- cgit v1.2.1