diff --git a/src/tools/clangbackend/source/tokeninfo.cpp b/src/tools/clangbackend/source/tokeninfo.cpp index b7e40d0327b..de40a954e16 100644 --- a/src/tools/clangbackend/source/tokeninfo.cpp +++ b/src/tools/clangbackend/source/tokeninfo.cpp @@ -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); diff --git a/tests/unit/unittest/tokenprocessor-test.cpp b/tests/unit/unittest/tokenprocessor-test.cpp index f48d546cb10..3383c9a3b93 100644 --- a/tests/unit/unittest/tokenprocessor-test.cpp +++ b/tests/unit/unittest/tokenprocessor-test.cpp @@ -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()