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