diff --git a/src/tools/clangbackend/ipcsource/highlightingmark.cpp b/src/tools/clangbackend/ipcsource/highlightingmark.cpp index d4744f78534..e903a1d2d38 100644 --- a/src/tools/clangbackend/ipcsource/highlightingmark.cpp +++ b/src/tools/clangbackend/ipcsource/highlightingmark.cpp @@ -205,18 +205,15 @@ bool HighlightingMark::isArgumentInCurrentOutputArgumentLocations() const auto originalSourceLocation = originalCursor.cxSourceLocation(); const auto isNotSameOutputArgument = [&] (const CXSourceRange ¤tSourceRange) { - return !(originalSourceLocation.int_data >= currentSourceRange.begin_int_data - && originalSourceLocation.int_data <= currentSourceRange.end_int_data); + return originalSourceLocation.int_data >= currentSourceRange.begin_int_data + && originalSourceLocation.int_data <= currentSourceRange.end_int_data; }; - auto partitionPoint = std::partition(currentOutputArgumentRanges->begin(), - currentOutputArgumentRanges->end(), - isNotSameOutputArgument); + auto found = std::find_if(currentOutputArgumentRanges->begin(), + currentOutputArgumentRanges->end(), + isNotSameOutputArgument); - bool isOutputArgument = partitionPoint != currentOutputArgumentRanges->end(); - - if (isOutputArgument) - currentOutputArgumentRanges->erase(partitionPoint, currentOutputArgumentRanges->end()); + bool isOutputArgument = found != currentOutputArgumentRanges->end(); return isOutputArgument; } diff --git a/tests/unit/unittest/highlightingmarks-test.cpp b/tests/unit/unittest/highlightingmarks-test.cpp index f007c13e679..51a380381e8 100644 --- a/tests/unit/unittest/highlightingmarks-test.cpp +++ b/tests/unit/unittest/highlightingmarks-test.cpp @@ -1049,12 +1049,23 @@ TEST_F(HighlightingMarks, NonConstPointerArgumentAsExpression) HasTwoTypes(HighlightingType::LocalVariable, HighlightingType::OutputArgument)); } -TEST_F(HighlightingMarks, NonConstPointerArgumentAsMemberOfClass) +TEST_F(HighlightingMarks, NonConstPointerArgumentAsInstanceWithMember) { const auto infos = translationUnit.highlightingMarksInRange(sourceRange(525, 46)); infos[1]; + ASSERT_THAT(infos[2], + HasTwoTypes(HighlightingType::LocalVariable, HighlightingType::OutputArgument)); +} + +TEST_F(HighlightingMarks, NonConstPointerArgumentAsMemberOfInstance) +{ + const auto infos = translationUnit.highlightingMarksInRange(sourceRange(525, 46)); + + infos[1]; + infos[2]; + ASSERT_THAT(infos[4], HasTwoTypes(HighlightingType::Field, HighlightingType::OutputArgument)); }