diff --git a/src/tools/clangbackend/source/codecompletionsextractor.cpp b/src/tools/clangbackend/source/codecompletionsextractor.cpp index b42520c7e50..065a5895393 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 3e493ab44b2..ae7559ce788 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 00000000000..bbbe8ccfb81 --- /dev/null +++ b/tests/unit/unittest/data/complete_extractor_constructorMemberInitialization.cpp @@ -0,0 +1,5 @@ +class Constructor { + Constructor() : {} + + int member; +};