From: Daniel Jasper Date: Thu, 21 Jun 2012 08:50:04 +0000 (+0000) Subject: Make the RecursiveASTVisitor visit the body of a range-based for loop X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1071ba9c324d831b437870a1fe63bf2ecdc4e9e4;p=clang Make the RecursiveASTVisitor visit the body of a range-based for loop again. This was broken in r158395. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158907 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/AST/RecursiveASTVisitor.h b/include/clang/AST/RecursiveASTVisitor.h index 2014f07152..d751d556e9 100644 --- a/include/clang/AST/RecursiveASTVisitor.h +++ b/include/clang/AST/RecursiveASTVisitor.h @@ -1878,6 +1878,7 @@ DEF_TRAVERSE_STMT(CXXForRangeStmt, { if (!shouldVisitImplicitCode()) { TRY_TO(TraverseStmt(S->getLoopVarStmt())); TRY_TO(TraverseStmt(S->getRangeInit())); + TRY_TO(TraverseStmt(S->getBody())); // Visit everything else only if shouldVisitImplicitCode(). return true; } diff --git a/unittests/Tooling/RecursiveASTVisitorTest.cpp b/unittests/Tooling/RecursiveASTVisitorTest.cpp index 9d693095d7..9ef86b552c 100644 --- a/unittests/Tooling/RecursiveASTVisitorTest.cpp +++ b/unittests/Tooling/RecursiveASTVisitorTest.cpp @@ -261,9 +261,10 @@ TEST(RecursiveASTVisitor, VisitsBaseClassTemplateArguments) { TEST(RecursiveASTVisitor, VisitsCXXForRangeStmtRange) { DeclRefExprVisitor Visitor; Visitor.ExpectMatch("x", 2, 25); + Visitor.ExpectMatch("x", 2, 30); EXPECT_TRUE(Visitor.runOver( "int x[5];\n" - "void f() { for (int i : x) {} }")); + "void f() { for (int i : x) { x[0] = 1; } }")); } TEST(RecursiveASTVisitor, VisitsCXXForRangeStmtLoopVariable) {