include "clang/Basic/ASTNode.td" class StmtNode : ASTNode, AttrSubject { StmtNode Base = base; bit Abstract = abstract; } // Statements def Stmt : StmtNode; def NullStmt : StmtNode; def CompoundStmt : StmtNode; def IfStmt : StmtNode; def SwitchStmt : StmtNode; def WhileStmt : StmtNode; def DoStmt : StmtNode; def ForStmt : StmtNode; def GotoStmt : StmtNode; def IndirectGotoStmt : StmtNode; def ContinueStmt : StmtNode; def BreakStmt : StmtNode; def ReturnStmt : StmtNode; def DeclStmt : StmtNode; def SwitchCase : StmtNode; def CaseStmt : StmtNode; def DefaultStmt : StmtNode; def CapturedStmt : StmtNode; // Statements that might produce a value (for example, as the last non-null // statement in a GNU statement-expression). def ValueStmt : StmtNode; def LabelStmt : StmtNode; def AttributedStmt : StmtNode; // Asm statements def AsmStmt : StmtNode; def GCCAsmStmt : StmtNode; def MSAsmStmt : StmtNode; // Obj-C statements def ObjCAtTryStmt : StmtNode; def ObjCAtCatchStmt : StmtNode; def ObjCAtFinallyStmt : StmtNode; def ObjCAtThrowStmt : StmtNode; def ObjCAtSynchronizedStmt : StmtNode; def ObjCForCollectionStmt : StmtNode; def ObjCAutoreleasePoolStmt : StmtNode; // C++ statements def CXXCatchStmt : StmtNode; def CXXTryStmt : StmtNode; def CXXForRangeStmt : StmtNode; // C++ Coroutines TS statements def CoroutineBodyStmt : StmtNode; def CoreturnStmt : StmtNode; // Expressions def Expr : StmtNode; def PredefinedExpr : StmtNode; def SYCLUniqueStableNameExpr : StmtNode; def DeclRefExpr : StmtNode; def IntegerLiteral : StmtNode; def FixedPointLiteral : StmtNode; def FloatingLiteral : StmtNode; def ImaginaryLiteral : StmtNode; def StringLiteral : StmtNode; def CharacterLiteral : StmtNode; def ParenExpr : StmtNode; def UnaryOperator : StmtNode; def OffsetOfExpr : StmtNode; def UnaryExprOrTypeTraitExpr : StmtNode; def ArraySubscriptExpr : StmtNode; def MatrixSubscriptExpr : StmtNode; def OMPArraySectionExpr : StmtNode; def OMPIteratorExpr : StmtNode; def CallExpr : StmtNode; def MemberExpr : StmtNode; def CastExpr : StmtNode; def BinaryOperator : StmtNode; def CompoundAssignOperator : StmtNode; def AbstractConditionalOperator : StmtNode; def ConditionalOperator : StmtNode; def BinaryConditionalOperator : StmtNode; def ImplicitCastExpr : StmtNode; def ExplicitCastExpr : StmtNode; def CStyleCastExpr : StmtNode; def OMPArrayShapingExpr : StmtNode; def CompoundLiteralExpr : StmtNode; def ExtVectorElementExpr : StmtNode; def InitListExpr : StmtNode; def DesignatedInitExpr : StmtNode; def DesignatedInitUpdateExpr : StmtNode; def ImplicitValueInitExpr : StmtNode; def NoInitExpr : StmtNode; def ArrayInitLoopExpr : StmtNode; def ArrayInitIndexExpr : StmtNode; def ParenListExpr : StmtNode; def VAArgExpr : StmtNode; def GenericSelectionExpr : StmtNode; def PseudoObjectExpr : StmtNode; def SourceLocExpr : StmtNode; // Wrapper expressions def FullExpr : StmtNode; def ConstantExpr : StmtNode; // Atomic expressions def AtomicExpr : StmtNode; // GNU Extensions. def AddrLabelExpr : StmtNode; def StmtExpr : StmtNode; def ChooseExpr : StmtNode; def GNUNullExpr : StmtNode; // C++ Expressions. def CXXOperatorCallExpr : StmtNode; def CXXMemberCallExpr : StmtNode; def CXXRewrittenBinaryOperator : StmtNode; def CXXNamedCastExpr : StmtNode; def CXXStaticCastExpr : StmtNode; def CXXDynamicCastExpr : StmtNode; def CXXReinterpretCastExpr : StmtNode; def CXXConstCastExpr : StmtNode; def CXXAddrspaceCastExpr : StmtNode; def CXXFunctionalCastExpr : StmtNode; def CXXTypeidExpr : StmtNode; def UserDefinedLiteral : StmtNode; def CXXBoolLiteralExpr : StmtNode; def CXXNullPtrLiteralExpr : StmtNode; def CXXThisExpr : StmtNode; def CXXThrowExpr : StmtNode; def CXXDefaultArgExpr : StmtNode; def CXXDefaultInitExpr : StmtNode; def CXXScalarValueInitExpr : StmtNode; def CXXStdInitializerListExpr : StmtNode; def CXXNewExpr : StmtNode; def CXXDeleteExpr : StmtNode; def CXXPseudoDestructorExpr : StmtNode; def TypeTraitExpr : StmtNode; def ArrayTypeTraitExpr : StmtNode; def ExpressionTraitExpr : StmtNode; def DependentScopeDeclRefExpr : StmtNode; def CXXConstructExpr : StmtNode; def CXXInheritedCtorInitExpr : StmtNode; def CXXBindTemporaryExpr : StmtNode; def ExprWithCleanups : StmtNode; def CXXTemporaryObjectExpr : StmtNode; def CXXUnresolvedConstructExpr : StmtNode; def CXXDependentScopeMemberExpr : StmtNode; def OverloadExpr : StmtNode; def UnresolvedLookupExpr : StmtNode; def UnresolvedMemberExpr : StmtNode; def CXXNoexceptExpr : StmtNode; def PackExpansionExpr : StmtNode; def SizeOfPackExpr : StmtNode; def SubstNonTypeTemplateParmExpr : StmtNode; def SubstNonTypeTemplateParmPackExpr : StmtNode; def FunctionParmPackExpr : StmtNode; def MaterializeTemporaryExpr : StmtNode; def LambdaExpr : StmtNode; def CXXFoldExpr : StmtNode; // C++ Coroutines TS expressions def CoroutineSuspendExpr : StmtNode; def CoawaitExpr : StmtNode; def DependentCoawaitExpr : StmtNode; def CoyieldExpr : StmtNode; // C++20 Concepts expressions def ConceptSpecializationExpr : StmtNode; def RequiresExpr : StmtNode; // Obj-C Expressions. def ObjCStringLiteral : StmtNode; def ObjCBoxedExpr : StmtNode; def ObjCArrayLiteral : StmtNode; def ObjCDictionaryLiteral : StmtNode; def ObjCEncodeExpr : StmtNode; def ObjCMessageExpr : StmtNode; def ObjCSelectorExpr : StmtNode; def ObjCProtocolExpr : StmtNode; def ObjCIvarRefExpr : StmtNode; def ObjCPropertyRefExpr : StmtNode; def ObjCIsaExpr : StmtNode; def ObjCIndirectCopyRestoreExpr : StmtNode; def ObjCBoolLiteralExpr : StmtNode; def ObjCSubscriptRefExpr : StmtNode; def ObjCAvailabilityCheckExpr : StmtNode; // Obj-C ARC Expressions. def ObjCBridgedCastExpr : StmtNode; // CUDA Expressions. def CUDAKernelCallExpr : StmtNode; // Clang Extensions. def ShuffleVectorExpr : StmtNode; def ConvertVectorExpr : StmtNode; def BlockExpr : StmtNode; def OpaqueValueExpr : StmtNode; def TypoExpr : StmtNode; def RecoveryExpr : StmtNode; def BuiltinBitCastExpr : StmtNode; // Microsoft Extensions. def MSPropertyRefExpr : StmtNode; def MSPropertySubscriptExpr : StmtNode; def CXXUuidofExpr : StmtNode; def SEHTryStmt : StmtNode; def SEHExceptStmt : StmtNode; def SEHFinallyStmt : StmtNode; def SEHLeaveStmt : StmtNode; def MSDependentExistsStmt : StmtNode; // OpenCL Extensions. def AsTypeExpr : StmtNode; // OpenMP Directives. def OMPCanonicalLoop : StmtNode; def OMPExecutableDirective : StmtNode; def OMPMetaDirective : StmtNode; def OMPLoopBasedDirective : StmtNode; def OMPLoopDirective : StmtNode; def OMPParallelDirective : StmtNode; def OMPSimdDirective : StmtNode; def OMPLoopTransformationDirective : StmtNode; def OMPTileDirective : StmtNode; def OMPUnrollDirective : StmtNode; def OMPForDirective : StmtNode; def OMPForSimdDirective : StmtNode; def OMPSectionsDirective : StmtNode; def OMPSectionDirective : StmtNode; def OMPSingleDirective : StmtNode; def OMPMasterDirective : StmtNode; def OMPCriticalDirective : StmtNode; def OMPParallelForDirective : StmtNode; def OMPParallelForSimdDirective : StmtNode; def OMPParallelMasterDirective : StmtNode; def OMPParallelSectionsDirective : StmtNode; def OMPTaskDirective : StmtNode; def OMPTaskyieldDirective : StmtNode; def OMPBarrierDirective : StmtNode; def OMPTaskwaitDirective : StmtNode; def OMPTaskgroupDirective : StmtNode; def OMPFlushDirective : StmtNode; def OMPDepobjDirective : StmtNode; def OMPScanDirective : StmtNode; def OMPOrderedDirective : StmtNode; def OMPAtomicDirective : StmtNode; def OMPTargetDirective : StmtNode; def OMPTargetDataDirective : StmtNode; def OMPTargetEnterDataDirective : StmtNode; def OMPTargetExitDataDirective : StmtNode; def OMPTargetParallelDirective : StmtNode; def OMPTargetParallelForDirective : StmtNode; def OMPTargetUpdateDirective : StmtNode; def OMPTeamsDirective : StmtNode; def OMPCancellationPointDirective : StmtNode; def OMPCancelDirective : StmtNode; def OMPTaskLoopDirective : StmtNode; def OMPTaskLoopSimdDirective : StmtNode; def OMPMasterTaskLoopDirective : StmtNode; def OMPMasterTaskLoopSimdDirective : StmtNode; def OMPParallelMasterTaskLoopDirective : StmtNode; def OMPParallelMasterTaskLoopSimdDirective : StmtNode; def OMPDistributeDirective : StmtNode; def OMPDistributeParallelForDirective : StmtNode; def OMPDistributeParallelForSimdDirective : StmtNode; def OMPDistributeSimdDirective : StmtNode; def OMPTargetParallelForSimdDirective : StmtNode; def OMPTargetSimdDirective : StmtNode; def OMPTeamsDistributeDirective : StmtNode; def OMPTeamsDistributeSimdDirective : StmtNode; def OMPTeamsDistributeParallelForSimdDirective : StmtNode; def OMPTeamsDistributeParallelForDirective : StmtNode; def OMPTargetTeamsDirective : StmtNode; def OMPTargetTeamsDistributeDirective : StmtNode; def OMPTargetTeamsDistributeParallelForDirective : StmtNode; def OMPTargetTeamsDistributeParallelForSimdDirective : StmtNode; def OMPTargetTeamsDistributeSimdDirective : StmtNode; def OMPInteropDirective : StmtNode; def OMPDispatchDirective : StmtNode; def OMPMaskedDirective : StmtNode; def OMPGenericLoopDirective : StmtNode;