On Wed, Mar 2, 2016 at 2:01 PM, Julian Bangert via cfe-commits <cfe-commits@lists.llvm.org> wrote: > This adds a matcher for C++ in Class initializers. > > --- > include/clang/ASTMatchers/ASTMatchers.h | 14 ++++++++++++++ > unittests/ASTMatchers/ASTMatchersTest.cpp | 7 +++++++ > 2 files changed, 21 insertions(+) > > diff --git a/include/clang/ASTMatchers/ASTMatchers.h > b/include/clang/ASTMatchers/ASTMatchers.h
Please also generate the AST matcher documentation by running dump-ast-matchers.py and register the function in Registry.cpp. Also, if you can provide an svn patch instead of a git patch, it would be appreciated (especially if you need someone to commit on your behalf). > index 21a4969..6b0a5d6 100644 > --- a/include/clang/ASTMatchers/ASTMatchers.h > +++ b/include/clang/ASTMatchers/ASTMatchers.h > @@ -2848,6 +2848,20 @@ AST_MATCHER(CXXCtorInitializer, isMemberInitializer) > { > return Node.isMemberInitializer(); > } > > +/// \brief Matches a C++ inClassInitializer matching the given matcher > +/// > +/// Given: > +/// \code > +/// class A { int x = 1; }; > +/// \endcode > +/// > +/// \c hasInClassInitializer(integerLiteral()) matches int x = 1 > +AST_MATCHER_P(FieldDecl, hasInClassInitializer, > + internal::Matcher<Expr>, InnerMatcher) { > + return Node.hasInClassInitializer() > + && InnerMatcher.matches(*Node.getInClassInitializer(), Finder, > Builder); > +} > + > /// \brief Matches any argument of a call expression or a constructor call > /// expression. > /// > diff --git a/unittests/ASTMatchers/ASTMatchersTest.cpp > b/unittests/ASTMatchers/ASTMatchersTest.cpp > index 133dc70..15776d7 100644 > --- a/unittests/ASTMatchers/ASTMatchersTest.cpp > +++ b/unittests/ASTMatchers/ASTMatchersTest.cpp > @@ -2402,6 +2402,13 @@ TEST(HasAnyConstructorInitializer, IsBaseInitializer) > { > hasName("E"))))); > } > > +TEST(Matcher, inClassInitializer) { > + EXPECT_TRUE(matches("class A{ int x = 1; };", > + fieldDecl(hasInClassInitializer(integerLiteral())))); > + EXPECT_FALSE(matches("class A{ int x; void b() { x = 1; } };", This should use EXPECT_TRUE and notMatches. ~Aaron > + > fieldDecl(hasInClassInitializer(integerLiteral())))); > +} > + > TEST(Matcher, NewExpression) { > StatementMatcher New = cxxNewExpr(); > > > _______________________________________________ > 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