diff --git a/clang/lib/ASTMatchers/ASTMatchFinder.cpp b/clang/lib/ASTMatchers/ASTMatchFinder.cpp --- a/clang/lib/ASTMatchers/ASTMatchFinder.cpp +++ b/clang/lib/ASTMatchers/ASTMatchFinder.cpp @@ -248,7 +248,7 @@ if (!match(*Node->getBody())) return false; - return false; + return true; } bool shouldVisitTemplateInstantiations() const { return true; } diff --git a/clang/unittests/ASTMatchers/ASTMatchersTraversalTest.cpp b/clang/unittests/ASTMatchers/ASTMatchersTraversalTest.cpp --- a/clang/unittests/ASTMatchers/ASTMatchersTraversalTest.cpp +++ b/clang/unittests/ASTMatchers/ASTMatchersTraversalTest.cpp @@ -1760,6 +1760,7 @@ void func14() { [] (TemplateType t, TemplateType u) { int e = t + u; }; + float i = 42.0; } )cpp"; @@ -1849,6 +1850,11 @@ lambdaExpr( forFunction(functionDecl(hasName("func14"))), has(templateTypeParmDecl(hasName("TemplateType"))))))); + + EXPECT_TRUE( + matches(Code, traverse(ast_type_traits::TK_IgnoreUnlessSpelledInSource, + functionDecl(hasName("func14"), + hasDescendant(floatLiteral()))))); } TEST(IgnoringImpCasts, MatchesImpCasts) {