]> granicus.if.org Git - clang/commitdiff
[ASTMatchers] Document that isAnyPointer() matcher also matches Objective-C object...
authorFelix Berger <flx@google.com>
Sun, 6 Mar 2016 15:27:59 +0000 (15:27 +0000)
committerFelix Berger <flx@google.com>
Sun, 6 Mar 2016 15:27:59 +0000 (15:27 +0000)
Summary: Add test for Objective-C object pointer matching.

Reviewers: aaron.ballman

Subscribers: klimek

Differential Revision: http://reviews.llvm.org/D17489

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@262806 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/ASTMatchers/ASTMatchers.h
unittests/ASTMatchers/ASTMatchersTest.cpp

index 21a49691cd78c3370327f5d5dbe422bbc40495a3..5a40fce60b183b03087f58a4ca98adf3ee459a45 100644 (file)
@@ -3688,15 +3688,22 @@ AST_MATCHER(QualType, isAnyCharacter) {
     return Node->isAnyCharacterType();
 }
 
-//// \brief Matches QualType nodes that are of any pointer type.
+/// \brief Matches QualType nodes that are of any pointer type; this includes
+/// the Objective-C object pointer type, which is different despite being
+/// syntactically similar.
 ///
 /// Given
 /// \code
 ///   int *i = nullptr;
+///
+///   @interface Foo
+///   @end
+///   Foo *f;
+///
 ///   int j;
 /// \endcode
 /// varDecl(hasType(isAnyPointer()))
-///   matches "int *i", but not "int j".
+///   matches "int *i" and "Foo *f", but not "int j".
 AST_MATCHER(QualType, isAnyPointer) {
   return Node->isAnyPointerType();
 }
index 133dc70513cc9a8feae6a1eb13b80706ead5d92c..a777e7f497cff38408e00ad43a4e5bf9ec8a28e1 100644 (file)
@@ -1483,6 +1483,11 @@ TEST(IsAnyPointer, MatchesPointers) {
   EXPECT_TRUE(matches("int* i = nullptr;", varDecl(hasType(isAnyPointer()))));
 }
 
+TEST(IsAnyPointer, MatchesObjcPointer) {
+  EXPECT_TRUE(matchesObjC("@interface Foo @end Foo *f;",
+                          varDecl(hasType(isAnyPointer()))));
+}
+
 TEST(IsAnyPointer, ReportsNoFalsePositives) {
   EXPECT_TRUE(notMatches("int i = 0;", varDecl(hasType(isAnyPointer()))));
 }