diff options
Diffstat (limited to 'clang/unittests/ASTMatchers/ASTMatchersTraversalTest.cpp')
-rw-r--r-- | clang/unittests/ASTMatchers/ASTMatchersTraversalTest.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/clang/unittests/ASTMatchers/ASTMatchersTraversalTest.cpp b/clang/unittests/ASTMatchers/ASTMatchersTraversalTest.cpp index b18cd631302..85b22b245ea 100644 --- a/clang/unittests/ASTMatchers/ASTMatchersTraversalTest.cpp +++ b/clang/unittests/ASTMatchers/ASTMatchersTraversalTest.cpp @@ -422,6 +422,35 @@ TEST(Matcher, AnyArgument) { EXPECT_TRUE(matches("void x(long) { int y; x(y); }", ImplicitCastedArgument)); } +TEST(Matcher, HasReceiver) { + EXPECT_TRUE(matchesObjC( + "@interface NSString @end" + "void f(NSString *x) {" + "[x containsString]" + "}", + objcMessageExpr(hasReceiver(declRefExpr(to(varDecl(hasName("x")))))))); + + EXPECT_FALSE(matchesObjC( + "@interface NSString +(NSString *) stringWithFormat; @end" + "void f() { [NSString stringWithFormat]; }", + objcMessageExpr(hasReceiver(declRefExpr(to(varDecl(hasName("x")))))))); +} + +TEST(Matcher, isInstanceMessage) { + EXPECT_TRUE(matchesObjC( + "@interface NSString @end" + "void f(NSString *x) {" + "[x containsString]" + "}", + objcMessageExpr(isInstanceMessage()))); + + EXPECT_FALSE(matchesObjC( + "@interface NSString +(NSString *) stringWithFormat; @end" + "void f() { [NSString stringWithFormat]; }", + objcMessageExpr(isInstanceMessage()))); + +} + TEST(ForEachArgumentWithParam, ReportsNoFalsePositives) { StatementMatcher ArgumentY = declRefExpr(to(varDecl(hasName("y")))).bind("arg"); |