Author: Stephen Kelly Date: 2020-05-23T01:29:39+01:00 New Revision: 64356b6d94eac13780cc36ea12053d61a027561e
URL: https://github.com/llvm/llvm-project/commit/64356b6d94eac13780cc36ea12053d61a027561e DIFF: https://github.com/llvm/llvm-project/commit/64356b6d94eac13780cc36ea12053d61a027561e.diff LOG: Add missing unit test Added: Modified: clang/unittests/ASTMatchers/ASTMatchersTraversalTest.cpp Removed: ################################################################################ diff --git a/clang/unittests/ASTMatchers/ASTMatchersTraversalTest.cpp b/clang/unittests/ASTMatchers/ASTMatchersTraversalTest.cpp index 8fcaeac9cb5e..e8b0a312d0a3 100644 --- a/clang/unittests/ASTMatchers/ASTMatchersTraversalTest.cpp +++ b/clang/unittests/ASTMatchers/ASTMatchersTraversalTest.cpp @@ -1830,6 +1830,43 @@ void stringConstruct() hasDescendant(cxxOperatorCallExpr( isAssignmentOperator(), hasArgument(1, stringLiteral()))))))); + + Code = R"cpp( + +struct C1 {}; +struct C2 { operator C1(); }; + +void conversionOperator() +{ + C2* c2; + C1 c1 = (*c2); +} + +)cpp"; + EXPECT_TRUE(matches( + Code, + traverse( + TK_AsIs, + functionDecl( + hasName("conversionOperator"), + hasDescendant( + varDecl( + hasName("c1"), + hasInitializer( + ignoringImplicit(cxxConstructExpr(hasArgument( + 0, ignoringImplicit( + cxxMemberCallExpr(onImplicitObjectArgument( + ignoringParenImpCasts(unaryOperator( + hasOperatorName("*"))))))))))) + .bind("c1")))))); + + EXPECT_TRUE(matches( + Code, + traverse(TK_IgnoreUnlessSpelledInSource, + functionDecl(hasName("conversionOperator"), + hasDescendant(varDecl( + hasName("c1"), hasInitializer(unaryOperator( + hasOperatorName("*"))))))))); } template <typename MatcherT> _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits