Clang: Fix highlighting lambda captures

This fixes the basic case, but e.g. captures with initializers, e.g.
[foo=bar] are not properly reported by libclang and thus "bar" is still
not highlighted for this case.

Task-number: QTCREATORBUG-15271
Change-Id: I1a2d465f71b0ae1a0406ef9e77d88898e8637958
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
This commit is contained in:
Nikolai Kosjar
2018-12-05 12:51:30 +01:00
parent 8eac37ae76
commit 4cc32d411a
2 changed files with 9 additions and 1 deletions

View File

@@ -372,7 +372,8 @@ void TokenInfo::identifierKind(const Cursor &cursor, Recursion recursion)
break;
case CXCursor_ParmDecl:
case CXCursor_VarDecl:
variableKind(cursor);
case CXCursor_VariableRef:
variableKind(cursor.referenced());
break;
case CXCursor_DeclRefExpr:
identifierKind(cursor.referenced(), Recursion::RecursivePass);

View File

@@ -1697,6 +1697,13 @@ TEST_F(TokenProcessor, DISABLED_NonConstArgumentConstructor)
ASSERT_THAT(infos[3], HasMixin(HighlightingType::OutputArgument));
}
TEST_F(TokenProcessor, LambdaLocalVariableCapture)
{
const auto infos = translationUnit.tokenInfosInRange(sourceRange(442, 47));
ASSERT_THAT(infos[4], HasOnlyType(HighlightingType::LocalVariable));
}
Data *TokenProcessor::d;
void TokenProcessor::SetUpTestCase()