aboutsummaryrefslogtreecommitdiff
path: root/clang/unittests/ASTMatchers/ASTMatchersNodeTest.cpp
diff options
context:
space:
mode:
authorAaron Ballman <aaron@aaronballman.com>2017-03-15 20:14:25 +0000
committerAaron Ballman <aaron@aaronballman.com>2017-03-15 20:14:25 +0000
commit9fd6ee6a7842628f72b39fa2bdacdb201a6681d8 (patch)
tree05b2a374cbbfb5eddc14015eb5c2f14e10a3b9b8 /clang/unittests/ASTMatchers/ASTMatchersNodeTest.cpp
parent43e3f97797a7ae37b086151d434878b6809400bc (diff)
downloadllvm-9fd6ee6a7842628f72b39fa2bdacdb201a6681d8.zip
llvm-9fd6ee6a7842628f72b39fa2bdacdb201a6681d8.tar.gz
llvm-9fd6ee6a7842628f72b39fa2bdacdb201a6681d8.tar.bz2
Add AST matchers for ObjCProtocolDecl, ObjCCategoryDecl, ObjCMethodDecl, ObjCIvarDecl, and ObjCPropertyDecl.
Patch by Dave Lee. llvm-svn: 297882
Diffstat (limited to 'clang/unittests/ASTMatchers/ASTMatchersNodeTest.cpp')
-rw-r--r--clang/unittests/ASTMatchers/ASTMatchersNodeTest.cpp43
1 files changed, 42 insertions, 1 deletions
diff --git a/clang/unittests/ASTMatchers/ASTMatchersNodeTest.cpp b/clang/unittests/ASTMatchers/ASTMatchersNodeTest.cpp
index dd45ca3..4c13acf 100644
--- a/clang/unittests/ASTMatchers/ASTMatchersNodeTest.cpp
+++ b/clang/unittests/ASTMatchers/ASTMatchersNodeTest.cpp
@@ -1500,9 +1500,10 @@ TEST(ObjCMessageExprMatcher, SimpleExprs) {
std::string Objc1String =
"@interface Str "
- " - (Str *)uppercaseString:(Str *)str;"
+ " - (Str *)uppercaseString;"
"@end "
"@interface foo "
+ "- (void)contents;"
"- (void)meth:(Str *)text;"
"@end "
" "
@@ -1540,5 +1541,45 @@ TEST(ObjCMessageExprMatcher, SimpleExprs) {
)));
}
+TEST(ObjCDeclMacher, CoreDecls) {
+ std::string ObjCString =
+ "@protocol Proto "
+ "- (void)protoDidThing; "
+ "@end "
+ "@interface Thing "
+ "@property int enabled; "
+ "@end "
+ "@interface Thing (ABC) "
+ "- (void)abc_doThing; "
+ "@end "
+ "@implementation Thing "
+ "{ id _ivar; } "
+ "- (void)anything {} "
+ "@end "
+ ;
+
+ EXPECT_TRUE(matchesObjC(
+ ObjCString,
+ objcProtocolDecl(hasName("Proto"))));
+ EXPECT_TRUE(matchesObjC(
+ ObjCString,
+ objcCategoryDecl(hasName("ABC"))));
+ EXPECT_TRUE(matchesObjC(
+ ObjCString,
+ objcMethodDecl(hasName("protoDidThing"))));
+ EXPECT_TRUE(matchesObjC(
+ ObjCString,
+ objcMethodDecl(hasName("abc_doThing"))));
+ EXPECT_TRUE(matchesObjC(
+ ObjCString,
+ objcMethodDecl(hasName("anything"))));
+ EXPECT_TRUE(matchesObjC(
+ ObjCString,
+ objcIvarDecl(hasName("_ivar"))));
+ EXPECT_TRUE(matchesObjC(
+ ObjCString,
+ objcPropertyDecl(hasName("enabled"))));
+}
+
} // namespace ast_matchers
} // namespace clang