On Sun, Feb 14, 2016 at 11:00 PM, Felix Berger via cfe-commits <cfe-commits@lists.llvm.org> wrote: > Author: flx > Date: Sun Feb 14 22:00:39 2016 > New Revision: 260872 > > URL: http://llvm.org/viewvc/llvm-project?rev=260872&view=rev > Log: > Add isAnyPointer() matchers. Register missing matchers. > > Summary: > The isAnyPointer() matcher is useful for http://reviews.llvm.org/D15623. > > Reviewers: alexfh, klimek > > Subscribers: cfe-commits > > Differential Revision: http://reviews.llvm.org/D15819 > > Modified: > cfe/trunk/include/clang/ASTMatchers/ASTMatchers.h > cfe/trunk/lib/ASTMatchers/Dynamic/Registry.cpp > cfe/trunk/unittests/ASTMatchers/ASTMatchersTest.cpp > > Modified: cfe/trunk/include/clang/ASTMatchers/ASTMatchers.h > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/ASTMatchers/ASTMatchers.h?rev=260872&r1=260871&r2=260872&view=diff > ============================================================================== > --- cfe/trunk/include/clang/ASTMatchers/ASTMatchers.h (original) > +++ cfe/trunk/include/clang/ASTMatchers/ASTMatchers.h Sun Feb 14 22:00:39 2016 > @@ -3673,6 +3673,19 @@ AST_MATCHER(QualType, isAnyCharacter) { > return Node->isAnyCharacterType(); > } > > +//// \brief Matches QualType nodes that are of any pointer type. > +/// > +/// Given > +/// \code > +/// int *i = nullptr; > +/// int j; > +/// \endcode > +/// varDecl(hasType(isAnyPointer())) > +/// matches "int *i", but not "int j". > +AST_MATCHER(QualType, isAnyPointer) { > + return Node->isAnyPointerType(); > +}
The whole point to isAnyPointer() is for objective C types, where pointers are modeled differently. Can you add documentation, an example, and tests for that fact? ~Aaron > + > /// \brief Matches QualType nodes that are const-qualified, i.e., that > /// include "top-level" const. > /// > > Modified: cfe/trunk/lib/ASTMatchers/Dynamic/Registry.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/ASTMatchers/Dynamic/Registry.cpp?rev=260872&r1=260871&r2=260872&view=diff > ============================================================================== > --- cfe/trunk/lib/ASTMatchers/Dynamic/Registry.cpp (original) > +++ cfe/trunk/lib/ASTMatchers/Dynamic/Registry.cpp Sun Feb 14 22:00:39 2016 > @@ -264,6 +264,8 @@ RegistryMaps::RegistryMaps() { > REGISTER_MATCHER(innerType); > REGISTER_MATCHER(integerLiteral); > REGISTER_MATCHER(isAnonymous); > + REGISTER_MATCHER(isAnyCharacter); > + REGISTER_MATCHER(isAnyPointer); > REGISTER_MATCHER(isArrow); > REGISTER_MATCHER(isBaseInitializer); > REGISTER_MATCHER(isCatchAll); > > Modified: cfe/trunk/unittests/ASTMatchers/ASTMatchersTest.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/ASTMatchers/ASTMatchersTest.cpp?rev=260872&r1=260871&r2=260872&view=diff > ============================================================================== > --- cfe/trunk/unittests/ASTMatchers/ASTMatchersTest.cpp (original) > +++ cfe/trunk/unittests/ASTMatchers/ASTMatchersTest.cpp Sun Feb 14 22:00:39 > 2016 > @@ -1479,6 +1479,14 @@ TEST(IsInteger, ReportsNoFalsePositives) > to(varDecl(hasType(isInteger())))))))); > } > > +TEST(IsAnyPointer, MatchesPointers) { > + EXPECT_TRUE(matches("int* i = nullptr;", > varDecl(hasType(isAnyPointer())))); > +} > + > +TEST(IsAnyPointer, ReportsNoFalsePositives) { > + EXPECT_TRUE(notMatches("int i = 0;", varDecl(hasType(isAnyPointer())))); > +} > + > TEST(IsAnyCharacter, MatchesCharacters) { > EXPECT_TRUE(matches("char i = 0;", varDecl(hasType(isAnyCharacter())))); > } > > > _______________________________________________ > cfe-commits mailing list > cfe-commits@lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits