<div dir="ltr">This adds a matcher for C++ in Class initializers. <br><div><br></div><div><div>---</div><div> include/clang/ASTMatchers/ASTMatchers.h   | 14 ++++++++++++++</div><div> unittests/ASTMatchers/ASTMatchersTest.cpp |  7 +++++++</div><div> 2 files changed, 21 insertions(+)</div><div><br></div><div>diff --git a/include/clang/ASTMatchers/ASTMatchers.h b/include/clang/ASTMatchers/ASTMatchers.h</div><div>index 21a4969..6b0a5d6 100644</div><div>--- a/include/clang/ASTMatchers/ASTMatchers.h</div><div>+++ b/include/clang/ASTMatchers/ASTMatchers.h</div><div>@@ -2848,6 +2848,20 @@ AST_MATCHER(CXXCtorInitializer, isMemberInitializer) {</div><div>   return Node.isMemberInitializer();</div><div> }</div><div> </div><div>+/// \brief Matches a C++ inClassInitializer matching the given matcher</div><div>+///</div><div>+/// Given:</div><div>+/// \code</div><div>+///   class A { int x = 1; };</div><div>+/// \endcode</div><div>+///</div><div>+/// \c hasInClassInitializer(integerLiteral()) matches int x = 1</div><div>+AST_MATCHER_P(FieldDecl, hasInClassInitializer,</div><div>+              internal::Matcher<Expr>, InnerMatcher) {</div><div>+  return Node.hasInClassInitializer()</div><div>+      && InnerMatcher.matches(*Node.getInClassInitializer(), Finder, Builder);</div><div>+}</div><div>+</div><div> /// \brief Matches any argument of a call expression or a constructor call</div><div> /// expression.</div><div> ///</div><div>diff --git a/unittests/ASTMatchers/ASTMatchersTest.cpp b/unittests/ASTMatchers/ASTMatchersTest.cpp</div><div>index 133dc70..15776d7 100644</div><div>--- a/unittests/ASTMatchers/ASTMatchersTest.cpp</div><div>+++ b/unittests/ASTMatchers/ASTMatchersTest.cpp</div><div>@@ -2402,6 +2402,13 @@ TEST(HasAnyConstructorInitializer, IsBaseInitializer) {</div><div>     hasName("E")))));</div><div> }</div><div> </div><div>+TEST(Matcher, inClassInitializer) {</div><div>+  EXPECT_TRUE(matches("class A{ int x = 1; };",</div><div>+                      fieldDecl(hasInClassInitializer(integerLiteral()))));</div><div>+  EXPECT_FALSE(matches("class A{ int x; void b() { x = 1; } };",</div><div>+                       fieldDecl(hasInClassInitializer(integerLiteral()))));</div><div>+}</div><div>+</div><div> TEST(Matcher, NewExpression) {</div><div>   StatementMatcher New = cxxNewExpr();</div></div><div><br></div></div>