summaryrefslogtreecommitdiffstats
path: root/clang/unittests/ASTMatchers/ASTMatchersTraversalTest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/unittests/ASTMatchers/ASTMatchersTraversalTest.cpp')
-rw-r--r--clang/unittests/ASTMatchers/ASTMatchersTraversalTest.cpp29
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");
OpenPOWER on IntegriCloud