From 56f9d17d352f8d6a51a8276a1c11c3c3d5769835 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Thu, 16 Sep 2021 13:37:14 +0200 Subject: [PATCH] ClangCodeModel: Fix an instance of mis-highlighting with clangd In the expression x.f(), x was wrongly categorized as an output parameter if f was a static function. Change-Id: I9167f98916963cdaa4b5ac6ead2c86fab43ad02e Reviewed-by: David Schulz --- src/plugins/clangcodemodel/clangdclient.cpp | 4 ++++ src/plugins/clangcodemodel/test/clangdtests.cpp | 4 ++++ .../clangcodemodel/test/data/highlighting/highlighting.cpp | 7 +++++++ 3 files changed, 15 insertions(+) diff --git a/src/plugins/clangcodemodel/clangdclient.cpp b/src/plugins/clangcodemodel/clangdclient.cpp index 9b8db75c489..bb0920aee65 100644 --- a/src/plugins/clangcodemodel/clangdclient.cpp +++ b/src/plugins/clangcodemodel/clangdclient.cpp @@ -2444,6 +2444,10 @@ static void semanticHighlighter(QFutureInterface } if (it->kind().endsWith("Cast") && it->hasConstType()) return false; + if (it->kind() == "Member" && it->arcanaContains("(") + && !it->arcanaContains("bound member function type")) { + return false; + } } return false; }; diff --git a/src/plugins/clangcodemodel/test/clangdtests.cpp b/src/plugins/clangcodemodel/test/clangdtests.cpp index d0e643c1d1a..cdd017a49b3 100644 --- a/src/plugins/clangcodemodel/test/clangdtests.cpp +++ b/src/plugins/clangcodemodel/test/clangdtests.cpp @@ -1231,6 +1231,10 @@ void ClangdTestHighlighting::test_data() << QList{C_PREPROCESSOR, C_DECLARATION} << 0; QTest::newRow("#ifdef'ed out code") << 800 << 1 << 800 << 17 << QList{C_DISABLED_CODE} << 0; + QTest::newRow("static function call (object)") << 819 << 5 << 819 << 6 + << QList{C_LOCAL} << 0; + QTest::newRow("static function call (argument)") << 819 << 18 << 819 << 19 + << QList{C_LOCAL, C_OUTPUT_ARGUMENT} << 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 5aa295bdf27..d9b08689f12 100644 --- a/src/plugins/clangcodemodel/test/data/highlighting/highlighting.cpp +++ b/src/plugins/clangcodemodel/test/data/highlighting/highlighting.cpp @@ -811,3 +811,10 @@ std::vector > vp3; + +void staticMemberFuncTest() { + struct S { static void staticFunc(int &); }; + S s; + int i; + s.staticFunc(i); +}