]> granicus.if.org Git - clang/commitdiff
Make the RecursiveASTVisitor visit the body of a range-based for loop
authorDaniel Jasper <djasper@google.com>
Thu, 21 Jun 2012 08:50:04 +0000 (08:50 +0000)
committerDaniel Jasper <djasper@google.com>
Thu, 21 Jun 2012 08:50:04 +0000 (08:50 +0000)
again. This was broken in r158395.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158907 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/AST/RecursiveASTVisitor.h
unittests/Tooling/RecursiveASTVisitorTest.cpp

index 2014f071523425357b05ad539728b00f7c32b765..d751d556e9f0ca45aecc737ee0d15e51020762b3 100644 (file)
@@ -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;
   }
index 9d693095d7cc1c27f118fdb9d5591598cecf5823..9ef86b552cfc3c9273be36a60909a1c40b0b6f14 100644 (file)
@@ -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) {