ClangCodeModel: Ignore number literals

... in the semantic highlighter. The syntax highlighter already handles
these.

Change-Id: I26f6bca06c4fc648ffe59bd9e3639d81d2265755
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
Christian Kandeler
2023-01-31 18:13:42 +01:00
parent 8655603c2e
commit 7c6a00b4e7
4 changed files with 21 additions and 25 deletions

View File

@@ -594,16 +594,9 @@ void ExtraHighlightingResultsCollector::setResultPosFromRange(HighlightingResult
void ExtraHighlightingResultsCollector::collectFromNode(const ClangdAstNode &node)
{
if (node.kind() == "UserDefinedLiteral")
if (node.kind().endsWith("Literal"))
return;
if (node.kind().endsWith("Literal")) {
if (node.kind() == "CXXBoolLiteral" || node.kind() == "CXXNullPtrLiteral")
return;
if (node.kind().startsWith("String") || node.kind().startsWith("Character"))
return;
insertResult(node, C_NUMBER);
return;
}
if (node.role() == "type" && node.kind() == "Builtin") {
insertResult(node, C_PRIMITIVE_TYPE);
return;

View File

@@ -693,8 +693,6 @@ void ClangdTestHighlighting::test_data()
QTest::addColumn<QList<int>>("expectedStyles");
QTest::addColumn<int>("expectedKind");
QTest::newRow("integer literal") << 23 << 24 << 23 << 25 << QList<int>{C_NUMBER} << 0;
QTest::newRow("float literal") << 24 << 24 << 24 << 28 << QList<int>{C_NUMBER} << 0;
QTest::newRow("function definition") << 45 << 5 << 45 << 13
<< QList<int>{C_FUNCTION, C_FUNCTION_DEFINITION, C_DECLARATION} << 0;
QTest::newRow("member function definition") << 52 << 10 << 52 << 24
@@ -797,15 +795,12 @@ void ClangdTestHighlighting::test_data()
<< QList<int>{C_PUNCTUATION, C_OPERATOR, C_OVERLOADED_OPERATOR, C_DECLARATION} << 0;
QTest::newRow("operator<<= call") << 629 << 12 << 629 << 15
<< QList<int>{C_PUNCTUATION, C_OPERATOR, C_OVERLOADED_OPERATOR} << 0;
QTest::newRow("integer literal 2") << 629 << 16 << 629 << 17 << QList<int>{C_NUMBER} << 0;
QTest::newRow("operator(int) member declaration (opening paren") << 619 << 19 << 619 << 20
<< QList<int>{C_PUNCTUATION, C_OPERATOR, C_OVERLOADED_OPERATOR, C_DECLARATION} << 0;
QTest::newRow("operator(int) member declaration (closing paren") << 619 << 20 << 619 << 21
<< QList<int>{C_PUNCTUATION, C_OPERATOR, C_OVERLOADED_OPERATOR, C_DECLARATION} << 0;
QTest::newRow("operator(int) call (opening parenthesis)") << 632 << 12 << 632 << 13
<< QList<int>{C_PUNCTUATION, C_OPERATOR, C_OVERLOADED_OPERATOR} << 0;
QTest::newRow("operator(int) call (argument)") << 632 << 13 << 632 << 14
<< QList<int>{C_NUMBER} << 0;
QTest::newRow("operator(int) call (closing parenthesis)") << 632 << 14 << 632 << 15
<< QList<int>{C_PUNCTUATION, C_OPERATOR, C_OVERLOADED_OPERATOR} << 0;
QTest::newRow("operator[] member declaration (opening bracket") << 620 << 18 << 620 << 19
@@ -814,8 +809,6 @@ void ClangdTestHighlighting::test_data()
<< QList<int>{C_PUNCTUATION, C_OPERATOR, C_OVERLOADED_OPERATOR, C_DECLARATION} << 0;
QTest::newRow("operator[] call (opening bracket)") << 633 << 12 << 633 << 13
<< QList<int>{C_PUNCTUATION, C_OPERATOR, C_OVERLOADED_OPERATOR} << 0;
QTest::newRow("operator[] call (argument)") << 633 << 13 << 633 << 14
<< QList<int>{C_NUMBER} << 0;
QTest::newRow("operator[] call (closing bracket)") << 633 << 14 << 633 << 15
<< QList<int>{C_PUNCTUATION, C_OPERATOR, C_OVERLOADED_OPERATOR} << 0;
QTest::newRow("operator new member declaration") << 621 << 20 << 621 << 23
@@ -834,8 +827,6 @@ void ClangdTestHighlighting::test_data()
<< QList<int>{C_KEYWORD, C_OPERATOR, C_OVERLOADED_OPERATOR} << 0;
QTest::newRow("operator new[] member call (type argument)") << 637 << 23 << 637 << 28
<< QList<int>{C_TYPE} << 0;
QTest::newRow("operator new[] member call (size argument)") << 637 << 29 << 637 << 31
<< QList<int>{C_NUMBER} << 0;
QTest::newRow("operator delete[] member declaration (keyword)") << 624 << 19 << 624 << 25
<< QList<int>{C_KEYWORD, C_OPERATOR, C_OVERLOADED_OPERATOR, C_DECLARATION} << 0;
QTest::newRow("operator delete[] member call (keyword") << 638 << 5 << 638 << 11
@@ -878,10 +869,6 @@ void ClangdTestHighlighting::test_data()
<< QList<int>{C_MACRO, C_DECLARATION} << 0;
QTest::newRow("function-like macro call") << 236 << 5 << 236 << 20
<< QList<int>{C_MACRO} << 0;
QTest::newRow("function-like macro call argument 1") << 236 << 21 << 236 << 22
<< QList<int>{C_NUMBER} << 0;
QTest::newRow("function-like macro call argument 2") << 236 << 24 << 236 << 25
<< QList<int>{C_NUMBER} << 0;
QTest::newRow("function template call") << 254 << 5 << 254 << 21 << QList<int>{C_FUNCTION} << 0;
QTest::newRow("template type parameter") << 265 << 17 << 265 << 38
<< QList<int>{C_TYPE, C_DECLARATION} << 0;
@@ -889,8 +876,6 @@ void ClangdTestHighlighting::test_data()
<< QList<int>{C_TYPE} << 0;
QTest::newRow("template non-type parameter") << 265 << 50 << 265 << 74
<< QList<int>{C_PARAMETER, C_DECLARATION} << 0;
QTest::newRow("template non-type parameter default argument") << 265 << 77 << 265 << 78
<< QList<int>{C_NUMBER} << 0;
QTest::newRow("template template parameter") << 265 << 103 << 265 << 128
<< QList<int>{C_TYPE, C_DECLARATION} << 0;
QTest::newRow("template template parameter default argument") << 265 << 131 << 265 << 142

View File

@@ -481,7 +481,7 @@ void CppHighlighterTest::test_data()
QTest::addColumn<int>("lastColumn");
QTest::addColumn<TextStyle>("style");
QTest::newRow("auto") << 1 << 1 << 1 << 4 << C_KEYWORD;
QTest::newRow("auto return type") << 1 << 1 << 1 << 4 << C_KEYWORD;
QTest::newRow("opening brace") << 2 << 1 << 2 << 1 << C_PUNCTUATION;
QTest::newRow("return") << 3 << 5 << 3 << 10 << C_KEYWORD;
QTest::newRow("raw string prefix") << 3 << 12 << 3 << 14 << C_KEYWORD;
@@ -501,6 +501,15 @@ void CppHighlighterTest::test_data()
QTest::newRow("true") << 11 << 15 << 11 << 18 << C_KEYWORD;
QTest::newRow("false") << 12 << 15 << 12 << 19 << C_KEYWORD;
QTest::newRow("nullptr") << 13 << 15 << 13 << 21 << C_KEYWORD;
QTest::newRow("auto var type") << 18 << 15 << 18 << 8 << C_KEYWORD;
QTest::newRow("integer literal") << 18 << 28 << 18 << 28 << C_NUMBER;
QTest::newRow("floating-point literal 1") << 19 << 28 << 19 << 31 << C_NUMBER;
QTest::newRow("floating-point literal 2") << 20 << 28 << 20 << 30 << C_NUMBER;
QTest::newRow("template keyword") << 23 << 1 << 23 << 8 << C_KEYWORD;
QTest::newRow("type in template type parameter") << 23 << 10 << 23 << 12 << C_PRIMITIVE_TYPE;
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;
}
void CppHighlighterTest::test()

View File

@@ -12,3 +12,12 @@ void keywords()
bool b2 = false;
void *p = nullptr;
}
void numberLiterals()
{
auto integer = 1;
auto numFloat1 = 1.2f;
auto numFloat2 = 1.2;
}
template<int n = 5> class C;