From 41038ba8cfd83790f88407719d8648b7565bf854 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Mon, 28 Feb 2022 16:02:59 +0100 Subject: [PATCH] ClangCodeModel: Do not highlight argument of operator* ... as output parameter with clangd. Task-number: QTCREATORBUG-27111 Change-Id: I5def562dcb9b8b0dac036fd46ed7e996c0297c95 Reviewed-by: Qt CI Bot Reviewed-by: Reviewed-by: David Schulz --- src/plugins/clangcodemodel/clangdclient.cpp | 3 ++- src/plugins/clangcodemodel/test/clangdtests.cpp | 2 ++ .../test/data/highlighting/highlighting.cpp | 9 +++++++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/plugins/clangcodemodel/clangdclient.cpp b/src/plugins/clangcodemodel/clangdclient.cpp index f4596dcb14e..0cd258ba210 100644 --- a/src/plugins/clangcodemodel/clangdclient.cpp +++ b/src/plugins/clangcodemodel/clangdclient.cpp @@ -2711,7 +2711,8 @@ static void semanticHighlighter(QFutureInterface &future, if (detail.startsWith("operator")) { return !detail.contains('=') && !detail.contains("++") && !detail.contains("--") - && !detail.contains("<<") && !detail.contains(">>"); + && !detail.contains("<<") && !detail.contains(">>") + && !detail.contains("*"); } firstChildTree << n.children().value_or(QList()); } diff --git a/src/plugins/clangcodemodel/test/clangdtests.cpp b/src/plugins/clangcodemodel/test/clangdtests.cpp index adaa705cb85..462b91f5092 100644 --- a/src/plugins/clangcodemodel/test/clangdtests.cpp +++ b/src/plugins/clangcodemodel/test/clangdtests.cpp @@ -1308,6 +1308,8 @@ void ClangdTestHighlighting::test_data() << QList{C_PREPROCESSOR} << 0; QTest::newRow("built-in define 3") << 952 << 21 << 952 << 40 << QList{C_PREPROCESSOR} << 0; + QTest::newRow("deref operator (object)") << 960 << 10 << 960 << 11 << QList{C_LOCAL} << 0; + QTest::newRow("deref operator (member)") << 960 << 12 << 960 << 13 << QList{C_FIELD} << 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 2ef28c11ba5..31ddb82a00c 100644 --- a/src/plugins/clangcodemodel/test/data/highlighting/highlighting.cpp +++ b/src/plugins/clangcodemodel/test/data/highlighting/highlighting.cpp @@ -951,3 +951,12 @@ void builtinDefines() const auto f2 = __FUNCTION__; const auto f3 = __PRETTY_FUNCTION__; } + +void derefOperator() +{ + struct S { bool operator*(); }; + struct S2 { S s; }; + S2 s; + if (*s.s) + return; +}