diff options
| author | Szabolcs Sipos <szabolcs.sipos@ericsson.com> | 2015-05-22 11:35:50 +0000 | 
|---|---|---|
| committer | Szabolcs Sipos <szabolcs.sipos@ericsson.com> | 2015-05-22 11:35:50 +0000 | 
| commit | b37b0ed239f51932b3c58d03f12b7f213a99cf1b (patch) | |
| tree | ef110c4a9b47302d7cb297a29d1f486225e060f7 | |
| parent | 575f7d4f1c1e1d818103e8b6b2c8d69c1f08836f (diff) | |
| download | bcm5719-llvm-b37b0ed239f51932b3c58d03f12b7f213a99cf1b.tar.gz bcm5719-llvm-b37b0ed239f51932b3c58d03f12b7f213a99cf1b.zip  | |
Adding new AST matcher: isConstexpr
It matches constexpr variable and function declarations.
llvm-svn: 238016
| -rw-r--r-- | clang/include/clang/ASTMatchers/ASTMatchers.h | 17 | ||||
| -rw-r--r-- | clang/unittests/ASTMatchers/ASTMatchersTest.cpp | 7 | 
2 files changed, 24 insertions, 0 deletions
diff --git a/clang/include/clang/ASTMatchers/ASTMatchers.h b/clang/include/clang/ASTMatchers/ASTMatchers.h index 94906d190bf..7f9764619c2 100644 --- a/clang/include/clang/ASTMatchers/ASTMatchers.h +++ b/clang/include/clang/ASTMatchers/ASTMatchers.h @@ -2709,6 +2709,23 @@ AST_MATCHER(FunctionDecl, isDeleted) {    return Node.isDeleted();  } +/// \brief Matches constexpr variable and function declarations. +/// +/// Given: +/// \code +///   constexpr int foo = 42; +///   constexpr int bar(); +/// \endcode +/// varDecl(isConstexpr()) +///   matches the declaration of foo. +/// functionDecl(isConstexpr()) +///   matches the declaration of bar. +AST_POLYMORPHIC_MATCHER(isConstexpr, +                        AST_POLYMORPHIC_SUPPORTED_TYPES(VarDecl, +                                                        FunctionDecl)) { +  return Node.isConstexpr(); +} +  /// \brief Matches the condition expression of an if statement, for loop,  /// or conditional operator.  /// diff --git a/clang/unittests/ASTMatchers/ASTMatchersTest.cpp b/clang/unittests/ASTMatchers/ASTMatchersTest.cpp index 6f1cf3fe2c8..ae363e974b5 100644 --- a/clang/unittests/ASTMatchers/ASTMatchersTest.cpp +++ b/clang/unittests/ASTMatchers/ASTMatchersTest.cpp @@ -1595,6 +1595,13 @@ TEST(IsDeleted, MatchesDeletedFunctionDeclarations) {                        functionDecl(hasName("Func"), isDeleted())));  } +TEST(isConstexpr, MatchesConstexprDeclarations) { +  EXPECT_TRUE(matches("constexpr int foo = 42;", +                      varDecl(hasName("foo"), isConstexpr()))); +  EXPECT_TRUE(matches("constexpr int bar();", +                      functionDecl(hasName("bar"), isConstexpr()))); +} +  TEST(HasAnyParameter, DoesntMatchIfInnerMatcherDoesntMatch) {    EXPECT_TRUE(notMatches("class Y {}; class X { void x(int) {} };",        methodDecl(hasAnyParameter(hasType(recordDecl(hasName("X")))))));  | 

