From 7498b5523ad841e5ea8466f9bcd103c48bf82af0 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Mon, 22 Nov 2021 14:33:51 +0100 Subject: [PATCH] ClangCodeModel: Fix another mis-highlighting with clangd Output parameter marking strikes again. Change-Id: Id98e07e87824a9db435d09482235d56c6808d42e Reviewed-by: Reviewed-by: David Schulz --- src/plugins/clangcodemodel/clangdclient.cpp | 6 ++++-- src/plugins/clangcodemodel/test/clangdtests.cpp | 2 ++ .../clangcodemodel/test/data/highlighting/highlighting.cpp | 6 ++++++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/plugins/clangcodemodel/clangdclient.cpp b/src/plugins/clangcodemodel/clangdclient.cpp index 46e80e750a3..7ca82cf1a8d 100644 --- a/src/plugins/clangcodemodel/clangdclient.cpp +++ b/src/plugins/clangcodemodel/clangdclient.cpp @@ -2489,8 +2489,10 @@ static void semanticHighlighter(QFutureInterface &future, while (!firstChildTree.isEmpty()) { const AstNode n = firstChildTree.takeFirst(); const QString detail = n.detail().value_or(QString()); - if (detail.startsWith("operator")) - return !detail.contains('='); + if (detail.startsWith("operator")) { + return !detail.contains('=') && !detail.contains("++") + && !detail.contains("--"); + } firstChildTree << n.children().value_or(QList()); } return true; diff --git a/src/plugins/clangcodemodel/test/clangdtests.cpp b/src/plugins/clangcodemodel/test/clangdtests.cpp index 1face3639c9..47c2ec330e1 100644 --- a/src/plugins/clangcodemodel/test/clangdtests.cpp +++ b/src/plugins/clangcodemodel/test/clangdtests.cpp @@ -1256,6 +1256,8 @@ void ClangdTestHighlighting::test_data() << QList{C_STRING} << 0; QTest::newRow("string literal passed to macro from header file") << 854 << 32 << 854 << 38 << QList{C_STRING} << 0; + QTest::newRow("user-defined operator call") << 860 << 7 << 860 << 8 + << QList{C_LOCAL} << 0; } void ClangdTestHighlighting::test() diff --git a/src/plugins/clangcodemodel/test/data/highlighting/highlighting.cpp b/src/plugins/clangcodemodel/test/data/highlighting/highlighting.cpp index 5d57a235bc6..54716d79a3f 100644 --- a/src/plugins/clangcodemodel/test/data/highlighting/highlighting.cpp +++ b/src/plugins/clangcodemodel/test/data/highlighting/highlighting.cpp @@ -853,3 +853,9 @@ void useString() const char *s = USE_STRING("TEXT"); s = USE_STRING_FROM_HEADER("TEXT"); } + +void useOperator() +{ + struct S { S& operator++(); } s; + ++s; +}