Author: Stephen Kelly Date: 2020-05-24T22:50:50+01:00 New Revision: e60de8c825d3087dca26d97985febbf97e179311
URL: https://github.com/llvm/llvm-project/commit/e60de8c825d3087dca26d97985febbf97e179311 DIFF: https://github.com/llvm/llvm-project/commit/e60de8c825d3087dca26d97985febbf97e179311.diff LOG: Add missing test Added: Modified: clang/lib/AST/Expr.cpp clang/unittests/AST/ASTTraverserTest.cpp clang/unittests/ASTMatchers/ASTMatchersTraversalTest.cpp Removed: ################################################################################ diff --git a/clang/lib/AST/Expr.cpp b/clang/lib/AST/Expr.cpp index b9b7ca95b218..4c175fff6421 100644 --- a/clang/lib/AST/Expr.cpp +++ b/clang/lib/AST/Expr.cpp @@ -2909,7 +2909,8 @@ Expr *Expr::IgnoreUnlessSpelledInSource() { Expr *LastE = nullptr; while (E != LastE) { LastE = E; - E = IgnoreExprNodes(E, IgnoreImplicitSingleStep, IgnoreImpCastsExtraSingleStep, + E = IgnoreExprNodes(E, IgnoreImplicitSingleStep, + IgnoreImpCastsExtraSingleStep, IgnoreParensOnlySingleStep); auto SR = E->getSourceRange(); diff --git a/clang/unittests/AST/ASTTraverserTest.cpp b/clang/unittests/AST/ASTTraverserTest.cpp index affbbe76f0d2..5585238939fe 100644 --- a/clang/unittests/AST/ASTTraverserTest.cpp +++ b/clang/unittests/AST/ASTTraverserTest.cpp @@ -291,6 +291,13 @@ void conversionOperator() C1 c1 = (*c2); } +template <unsigned alignment> +void template_test() { + static_assert(alignment, ""); +} +void actual_template_test() { + template_test<4>(); +} )cpp"); { @@ -408,6 +415,31 @@ VarDecl 'c1' VarDecl 'c1' `-UnaryOperator `-DeclRefExpr 'c2' +)cpp"); + } + + { + auto FN = ast_matchers::match( + functionDecl(hasName("template_test"), + hasDescendant(staticAssertDecl().bind("staticAssert"))), + AST->getASTContext()); + EXPECT_EQ(FN.size(), 2u); + + EXPECT_EQ(dumpASTString(TK_AsIs, FN[1].getNodeAs<Decl>("staticAssert")), + R"cpp( +StaticAssertDecl +|-ImplicitCastExpr +| `-SubstNonTypeTemplateParmExpr +| `-IntegerLiteral +`-StringLiteral +)cpp"); + + EXPECT_EQ(dumpASTString(TK_IgnoreUnlessSpelledInSource, + FN[1].getNodeAs<Decl>("staticAssert")), + R"cpp( +StaticAssertDecl +|-IntegerLiteral +`-StringLiteral )cpp"); } } diff --git a/clang/unittests/ASTMatchers/ASTMatchersTraversalTest.cpp b/clang/unittests/ASTMatchers/ASTMatchersTraversalTest.cpp index e8b0a312d0a3..6bd8fcf66498 100644 --- a/clang/unittests/ASTMatchers/ASTMatchersTraversalTest.cpp +++ b/clang/unittests/ASTMatchers/ASTMatchersTraversalTest.cpp @@ -1867,6 +1867,26 @@ void conversionOperator() hasDescendant(varDecl( hasName("c1"), hasInitializer(unaryOperator( hasOperatorName("*"))))))))); + + Code = R"cpp( + +template <unsigned alignment> +void template_test() { + static_assert(alignment, ""); +} +void actual_template_test() { + template_test<4>(); +} + +)cpp"; + EXPECT_TRUE(matches( + Code, + traverse(TK_AsIs, + staticAssertDecl(has(implicitCastExpr(has( + substNonTypeTemplateParmExpr(has(integerLiteral()))))))))); + + EXPECT_TRUE(matches(Code, traverse(TK_IgnoreUnlessSpelledInSource, + staticAssertDecl(has(integerLiteral()))))); } template <typename MatcherT> _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits