[ASTMatchers] Document that isAnyPointer() matcher also matches Objective-C object pointers.

Summary: Add test for Objective-C object pointer matching.

Reviewers: aaron.ballman

Subscribers: klimek

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

llvm-svn: 262806
This commit is contained in:
Felix Berger 2016-03-06 15:27:59 +00:00
parent 50cd3c4ec7
commit 40ef42a932
2 changed files with 14 additions and 2 deletions

View 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();
}

View 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()))));
}