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); +}