From d7308cc7a69c150383d39e4461fd4acfc4f9c425 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Tue, 31 Jan 2023 18:26:34 +0100 Subject: [PATCH] ClangCodeModel: Ignore built-in types ... in the semantic highlighter. The syntax highlighter already handles these. Change-Id: Ib1e80ec194021dbd2b4eca7a300db869ccddb7b0 Reviewed-by: Qt CI Bot Reviewed-by: Reviewed-by: David Schulz --- src/plugins/clangcodemodel/clangdsemantichighlighting.cpp | 5 +---- src/plugins/clangcodemodel/test/clangdtests.cpp | 2 -- src/plugins/cppeditor/cpphighlighter.cpp | 3 +++ src/plugins/cppeditor/testcases/highlightingtestcase.cpp | 4 ++++ 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/plugins/clangcodemodel/clangdsemantichighlighting.cpp b/src/plugins/clangcodemodel/clangdsemantichighlighting.cpp index cc16bf2b96c..faf5530f1af 100644 --- a/src/plugins/clangcodemodel/clangdsemantichighlighting.cpp +++ b/src/plugins/clangcodemodel/clangdsemantichighlighting.cpp @@ -596,11 +596,8 @@ void ExtraHighlightingResultsCollector::collectFromNode(const ClangdAstNode &nod { if (node.kind().endsWith("Literal")) return; - - if (node.role() == "type" && node.kind() == "Builtin") { - insertResult(node, C_PRIMITIVE_TYPE); + if (node.role() == "type" && node.kind() == "Builtin") return; - } if (m_clangdVersion < 16 && node.role() == "attribute" && (node.kind() == "Override" || node.kind() == "Final")) { diff --git a/src/plugins/clangcodemodel/test/clangdtests.cpp b/src/plugins/clangcodemodel/test/clangdtests.cpp index f343ad34f47..cf94865098c 100644 --- a/src/plugins/clangcodemodel/test/clangdtests.cpp +++ b/src/plugins/clangcodemodel/test/clangdtests.cpp @@ -712,8 +712,6 @@ void ClangdTestHighlighting::test_data() QTest::newRow("function call") << 64 << 5 << 64 << 13 << QList{C_FUNCTION} << 0; QTest::newRow("type conversion function (struct)") << 68 << 14 << 68 << 17 << QList{C_TYPE} << 0; - QTest::newRow("type conversion function (built-in)") << 69 << 14 << 69 << 17 - << QList{C_PRIMITIVE_TYPE} << 0; QTest::newRow("type reference") << 74 << 5 << 74 << 8 << QList{C_TYPE} << 0; QTest::newRow("local variable declaration") << 79 << 9 << 79 << 12 << QList{C_LOCAL, C_DECLARATION} << 0; diff --git a/src/plugins/cppeditor/cpphighlighter.cpp b/src/plugins/cppeditor/cpphighlighter.cpp index da0d8b6da0f..1f83b317ada 100644 --- a/src/plugins/cppeditor/cpphighlighter.cpp +++ b/src/plugins/cppeditor/cpphighlighter.cpp @@ -510,6 +510,9 @@ void CppHighlighterTest::test_data() QTest::newRow("integer literal as non-type template parameter default value") << 23 << 18 << 23 << 18 << C_NUMBER; QTest::newRow("class keyword") << 23 << 21 << 23 << 25 << C_KEYWORD; + QTest::newRow("struct keyword") << 25 << 1 << 25 << 6 << C_KEYWORD; + QTest::newRow("operator keyword") << 26 << 5 << 26 << 12 << C_KEYWORD; + QTest::newRow("type in conversion operator") << 26 << 14 << 26 << 16 << C_PRIMITIVE_TYPE; } void CppHighlighterTest::test() diff --git a/src/plugins/cppeditor/testcases/highlightingtestcase.cpp b/src/plugins/cppeditor/testcases/highlightingtestcase.cpp index fb93e5a4132..20fa2526467 100644 --- a/src/plugins/cppeditor/testcases/highlightingtestcase.cpp +++ b/src/plugins/cppeditor/testcases/highlightingtestcase.cpp @@ -21,3 +21,7 @@ void numberLiterals() } template class C; + +struct ConversionFunction { + operator int(); +};