[clang] [llvm] [clang] Add hasAdjSubstatements matcher (PR #169965)

Denis Mikhailov via llvm-commits llvm-commits at lists.llvm.org
Tue Dec 9 05:36:51 PST 2025


================
@@ -5911,6 +5911,30 @@ AST_POLYMORPHIC_MATCHER_P(hasAnySubstatement,
                                           Builder) != CS->body_end();
 }
 
+/// Matches compound statements that contain adjacent substatements matching
+/// the provided sequence of matchers. Also matches StmtExprs that have
+/// CompoundStmt as children.
+///
+/// Given
+/// \code
+///   { {}; 1+2; }
+/// \endcode
+/// hasAdjSubstatements(compoundStmt(), binaryOperator())
+///   matches '{ {}; 1+2; }'
+/// with compoundStmt()
+///   matching '{}'
+/// with binaryOperator()
+///   matching '1+2'
+///
+///    hasAdjSubstatements(compoundStmt(), binaryOperator(), returnStmt())
+///  Is equivalent to matching a compound statement that contains
+///  a compound statement immediately followed by a binary operator
+///  immediately followed by a return statement.
+extern const internal::VariadicFunction<
+    internal::HasAdjSubstatementsMatcherType, internal::Matcher<Stmt>,
+    internal::hasAdjSubstatementsFunc>
+    hasAdjSubstatements;
----------------
denzor200 wrote:

How can i change `internal::Matcher<Stmt>` to `AST_POLYMORPHIC_SUPPORTED_TYPES(...)`?
<img width="872" height="69" alt="image" src="https://github.com/user-attachments/assets/d57d5452-80e8-4947-904a-a68137332d80" />


https://github.com/llvm/llvm-project/pull/169965


More information about the llvm-commits mailing list