This revision was automatically updated to reflect the committed changes. Closed by commit rL285239: [RecursiveASTVisitor] Visit the implicit expression of a CXXDefaultArgExpr (authored by malcolm.parsons).
Changed prior to commit: https://reviews.llvm.org/D25992?vs=75899&id=75944#toc Repository: rL LLVM https://reviews.llvm.org/D25992 Files: cfe/trunk/include/clang/AST/RecursiveASTVisitor.h cfe/trunk/unittests/Tooling/RecursiveASTVisitorTest.cpp Index: cfe/trunk/unittests/Tooling/RecursiveASTVisitorTest.cpp =================================================================== --- cfe/trunk/unittests/Tooling/RecursiveASTVisitorTest.cpp +++ cfe/trunk/unittests/Tooling/RecursiveASTVisitorTest.cpp @@ -152,4 +152,21 @@ "};\n")); } +// Check to ensure that implicit default argument expressions are visited. +class IntegerLiteralVisitor + : public ExpectedLocationVisitor<IntegerLiteralVisitor> { +public: + bool VisitIntegerLiteral(const IntegerLiteral *IL) { + Match("literal", IL->getLocation()); + return true; + } +}; + +TEST(RecursiveASTVisitor, DefaultArgumentsAreVisited) { + IntegerLiteralVisitor Visitor; + Visitor.ExpectMatch("literal", 1, 15, 2); + EXPECT_TRUE(Visitor.runOver("int f(int i = 1);\n" + "static int k = f();\n")); +} + } // end anonymous namespace Index: cfe/trunk/include/clang/AST/RecursiveASTVisitor.h =================================================================== --- cfe/trunk/include/clang/AST/RecursiveASTVisitor.h +++ cfe/trunk/include/clang/AST/RecursiveASTVisitor.h @@ -2354,7 +2354,10 @@ }) DEF_TRAVERSE_STMT(CXXBindTemporaryExpr, {}) DEF_TRAVERSE_STMT(CXXBoolLiteralExpr, {}) -DEF_TRAVERSE_STMT(CXXDefaultArgExpr, {}) +DEF_TRAVERSE_STMT(CXXDefaultArgExpr, { + if (getDerived().shouldVisitImplicitCode()) + TRY_TO(TraverseStmt(S->getExpr())); +}) DEF_TRAVERSE_STMT(CXXDefaultInitExpr, {}) DEF_TRAVERSE_STMT(CXXDeleteExpr, {}) DEF_TRAVERSE_STMT(ExprWithCleanups, {})
Index: cfe/trunk/unittests/Tooling/RecursiveASTVisitorTest.cpp =================================================================== --- cfe/trunk/unittests/Tooling/RecursiveASTVisitorTest.cpp +++ cfe/trunk/unittests/Tooling/RecursiveASTVisitorTest.cpp @@ -152,4 +152,21 @@ "};\n")); } +// Check to ensure that implicit default argument expressions are visited. +class IntegerLiteralVisitor + : public ExpectedLocationVisitor<IntegerLiteralVisitor> { +public: + bool VisitIntegerLiteral(const IntegerLiteral *IL) { + Match("literal", IL->getLocation()); + return true; + } +}; + +TEST(RecursiveASTVisitor, DefaultArgumentsAreVisited) { + IntegerLiteralVisitor Visitor; + Visitor.ExpectMatch("literal", 1, 15, 2); + EXPECT_TRUE(Visitor.runOver("int f(int i = 1);\n" + "static int k = f();\n")); +} + } // end anonymous namespace Index: cfe/trunk/include/clang/AST/RecursiveASTVisitor.h =================================================================== --- cfe/trunk/include/clang/AST/RecursiveASTVisitor.h +++ cfe/trunk/include/clang/AST/RecursiveASTVisitor.h @@ -2354,7 +2354,10 @@ }) DEF_TRAVERSE_STMT(CXXBindTemporaryExpr, {}) DEF_TRAVERSE_STMT(CXXBoolLiteralExpr, {}) -DEF_TRAVERSE_STMT(CXXDefaultArgExpr, {}) +DEF_TRAVERSE_STMT(CXXDefaultArgExpr, { + if (getDerived().shouldVisitImplicitCode()) + TRY_TO(TraverseStmt(S->getExpr())); +}) DEF_TRAVERSE_STMT(CXXDefaultInitExpr, {}) DEF_TRAVERSE_STMT(CXXDeleteExpr, {}) DEF_TRAVERSE_STMT(ExprWithCleanups, {})
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits