forked from qt-creator/qt-creator
ClangCodeModel: Properly highlight built-in defines
These are not reported as semantic tokens, so consult the AST Task-number: QTCREATORBUG-27111 Change-Id: I38efcfbdc3197173a50033a74a1bc631eaa8d2c1 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: David Schulz <david.schulz@qt.io> Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
This commit is contained in:
@@ -3598,8 +3598,16 @@ void ExtraHighlightingResultsCollector::collectFromNode(const AstNode &node)
|
||||
}
|
||||
|
||||
const bool isExpression = node.role() == "expression";
|
||||
const bool isDeclaration = node.role() == "declaration";
|
||||
if (isExpression && node.kind() == "Predefined") {
|
||||
HighlightingResult result;
|
||||
result.useTextSyles = true;
|
||||
result.textStyles.mainStyle = C_PREPROCESSOR;
|
||||
setResultPosFromRange(result, node.range());
|
||||
insertResult(result);
|
||||
return;
|
||||
}
|
||||
|
||||
const bool isDeclaration = node.role() == "declaration";
|
||||
const int nodeStartPos = posForNodeStart(node);
|
||||
const int nodeEndPos = posForNodeEnd(node);
|
||||
const QList<AstNode> children = node.children().value_or(QList<AstNode>());
|
||||
|
@@ -1302,6 +1302,12 @@ void ClangdTestHighlighting::test_data()
|
||||
<< QList<int>{C_FIELD} << 0;
|
||||
QTest::newRow("output arg") << 945 << 20 << 945 << 23
|
||||
<< QList<int>{C_LOCAL, C_OUTPUT_ARGUMENT} << 0;
|
||||
QTest::newRow("built-in define 1") << 950 << 21 << 950 << 29
|
||||
<< QList<int>{C_PREPROCESSOR} << 0;
|
||||
QTest::newRow("built-in define 2") << 951 << 21 << 951 << 33
|
||||
<< QList<int>{C_PREPROCESSOR} << 0;
|
||||
QTest::newRow("built-in define 3") << 952 << 21 << 952 << 40
|
||||
<< QList<int>{C_PREPROCESSOR} << 0;
|
||||
}
|
||||
|
||||
void ClangdTestHighlighting::test()
|
||||
|
@@ -944,3 +944,10 @@ void inputsAndOutputsFromObject(const WithVector &s)
|
||||
std::vector<int> out;
|
||||
transform(s.v, out, [] {});
|
||||
}
|
||||
|
||||
void builtinDefines()
|
||||
{
|
||||
const auto f1 = __func__;
|
||||
const auto f2 = __FUNCTION__;
|
||||
const auto f3 = __PRETTY_FUNCTION__;
|
||||
}
|
||||
|
Reference in New Issue
Block a user