r260872 - Add isAnyPointer() matchers. Register missing matchers.

Aaron Ballman via cfe-commits cfe-commits at lists.llvm.org
Mon Feb 15 05:05:27 PST 2016


On Sun, Feb 14, 2016 at 11:00 PM, Felix Berger via cfe-commits
<cfe-commits at 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 at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


More information about the cfe-commits mailing list