3 class Stmt<bit abstract = 0> : AttrSubject {
4 bit Abstract = abstract;
7 class DStmt<Stmt base, bit abstract = 0> : Stmt<abstract> {
13 def CompoundStmt : Stmt;
15 def AttributedStmt : Stmt;
17 def SwitchStmt : Stmt;
22 def IndirectGotoStmt : Stmt;
23 def ContinueStmt : Stmt;
25 def ReturnStmt : Stmt;
27 def SwitchCase : Stmt<1>;
28 def CaseStmt : DStmt<SwitchCase>;
29 def DefaultStmt : DStmt<SwitchCase>;
32 def AsmStmt : Stmt<1>;
33 def GCCAsmStmt : DStmt<AsmStmt>;
34 def MSAsmStmt : DStmt<AsmStmt>;
37 def ObjCAtTryStmt : Stmt;
38 def ObjCAtCatchStmt : Stmt;
39 def ObjCAtFinallyStmt : Stmt;
40 def ObjCAtThrowStmt : Stmt;
41 def ObjCAtSynchronizedStmt : Stmt;
42 def ObjCForCollectionStmt : Stmt;
43 def ObjCAutoreleasePoolStmt : Stmt;
46 def CXXCatchStmt : Stmt;
47 def CXXTryStmt : Stmt;
48 def CXXForRangeStmt : Stmt;
52 def PredefinedExpr : DStmt<Expr>;
53 def DeclRefExpr : DStmt<Expr>;
54 def IntegerLiteral : DStmt<Expr>;
55 def FloatingLiteral : DStmt<Expr>;
56 def ImaginaryLiteral : DStmt<Expr>;
57 def StringLiteral : DStmt<Expr>;
58 def CharacterLiteral : DStmt<Expr>;
59 def ParenExpr : DStmt<Expr>;
60 def UnaryOperator : DStmt<Expr>;
61 def OffsetOfExpr : DStmt<Expr>;
62 def UnaryExprOrTypeTraitExpr : DStmt<Expr>;
63 def ArraySubscriptExpr : DStmt<Expr>;
64 def CallExpr : DStmt<Expr>;
65 def MemberExpr : DStmt<Expr>;
66 def CastExpr : DStmt<Expr, 1>;
67 def BinaryOperator : DStmt<Expr>;
68 def CompoundAssignOperator : DStmt<BinaryOperator>;
69 def AbstractConditionalOperator : DStmt<Expr, 1>;
70 def ConditionalOperator : DStmt<AbstractConditionalOperator>;
71 def BinaryConditionalOperator : DStmt<AbstractConditionalOperator>;
72 def ImplicitCastExpr : DStmt<CastExpr>;
73 def ExplicitCastExpr : DStmt<CastExpr, 1>;
74 def CStyleCastExpr : DStmt<ExplicitCastExpr>;
75 def CompoundLiteralExpr : DStmt<Expr>;
76 def ExtVectorElementExpr : DStmt<Expr>;
77 def InitListExpr : DStmt<Expr>;
78 def DesignatedInitExpr : DStmt<Expr>;
79 def ImplicitValueInitExpr : DStmt<Expr>;
80 def ParenListExpr : DStmt<Expr>;
81 def VAArgExpr : DStmt<Expr>;
82 def GenericSelectionExpr : DStmt<Expr>;
83 def PseudoObjectExpr : DStmt<Expr>;
86 def AtomicExpr : DStmt<Expr>;
89 def AddrLabelExpr : DStmt<Expr>;
90 def StmtExpr : DStmt<Expr>;
91 def ChooseExpr : DStmt<Expr>;
92 def GNUNullExpr : DStmt<Expr>;
95 def CXXOperatorCallExpr : DStmt<CallExpr>;
96 def CXXMemberCallExpr : DStmt<CallExpr>;
97 def CXXNamedCastExpr : DStmt<ExplicitCastExpr, 1>;
98 def CXXStaticCastExpr : DStmt<CXXNamedCastExpr>;
99 def CXXDynamicCastExpr : DStmt<CXXNamedCastExpr>;
100 def CXXReinterpretCastExpr : DStmt<CXXNamedCastExpr>;
101 def CXXConstCastExpr : DStmt<CXXNamedCastExpr>;
102 def CXXFunctionalCastExpr : DStmt<ExplicitCastExpr>;
103 def CXXTypeidExpr : DStmt<Expr>;
104 def UserDefinedLiteral : DStmt<CallExpr>;
105 def CXXBoolLiteralExpr : DStmt<Expr>;
106 def CXXNullPtrLiteralExpr : DStmt<Expr>;
107 def CXXThisExpr : DStmt<Expr>;
108 def CXXThrowExpr : DStmt<Expr>;
109 def CXXDefaultArgExpr : DStmt<Expr>;
110 def CXXScalarValueInitExpr : DStmt<Expr>;
111 def CXXNewExpr : DStmt<Expr>;
112 def CXXDeleteExpr : DStmt<Expr>;
113 def CXXPseudoDestructorExpr : DStmt<Expr>;
114 def TypeTraitExpr : DStmt<Expr>;
115 def UnaryTypeTraitExpr : DStmt<Expr>;
116 def BinaryTypeTraitExpr : DStmt<Expr>;
117 def ArrayTypeTraitExpr : DStmt<Expr>;
118 def ExpressionTraitExpr : DStmt<Expr>;
119 def DependentScopeDeclRefExpr : DStmt<Expr>;
120 def CXXConstructExpr : DStmt<Expr>;
121 def CXXBindTemporaryExpr : DStmt<Expr>;
122 def ExprWithCleanups : DStmt<Expr>;
123 def CXXTemporaryObjectExpr : DStmt<CXXConstructExpr>;
124 def CXXUnresolvedConstructExpr : DStmt<Expr>;
125 def CXXDependentScopeMemberExpr : DStmt<Expr>;
126 def OverloadExpr : DStmt<Expr, 1>;
127 def UnresolvedLookupExpr : DStmt<OverloadExpr>;
128 def UnresolvedMemberExpr : DStmt<OverloadExpr>;
129 def CXXNoexceptExpr : DStmt<Expr>;
130 def PackExpansionExpr : DStmt<Expr>;
131 def SizeOfPackExpr : DStmt<Expr>;
132 def SubstNonTypeTemplateParmExpr : DStmt<Expr>;
133 def SubstNonTypeTemplateParmPackExpr : DStmt<Expr>;
134 def FunctionParmPackExpr : DStmt<Expr>;
135 def MaterializeTemporaryExpr : DStmt<Expr>;
136 def LambdaExpr : DStmt<Expr>;
138 // Obj-C Expressions.
139 def ObjCStringLiteral : DStmt<Expr>;
140 def ObjCBoxedExpr : DStmt<Expr>;
141 def ObjCArrayLiteral : DStmt<Expr>;
142 def ObjCDictionaryLiteral : DStmt<Expr>;
143 def ObjCEncodeExpr : DStmt<Expr>;
144 def ObjCMessageExpr : DStmt<Expr>;
145 def ObjCSelectorExpr : DStmt<Expr>;
146 def ObjCProtocolExpr : DStmt<Expr>;
147 def ObjCIvarRefExpr : DStmt<Expr>;
148 def ObjCPropertyRefExpr : DStmt<Expr>;
149 def ObjCIsaExpr : DStmt<Expr>;
150 def ObjCIndirectCopyRestoreExpr : DStmt<Expr>;
151 def ObjCBoolLiteralExpr : DStmt<Expr>;
152 def ObjCSubscriptRefExpr : DStmt<Expr>;
154 // Obj-C ARC Expressions.
155 def ObjCBridgedCastExpr : DStmt<ExplicitCastExpr>;
158 def CUDAKernelCallExpr : DStmt<CallExpr>;
161 def ShuffleVectorExpr : DStmt<Expr>;
162 def BlockExpr : DStmt<Expr>;
163 def OpaqueValueExpr : DStmt<Expr>;
165 // Microsoft Extensions.
166 def CXXUuidofExpr : DStmt<Expr>;
167 def SEHTryStmt : Stmt;
168 def SEHExceptStmt : Stmt;
169 def SEHFinallyStmt : Stmt;
170 def MSDependentExistsStmt : Stmt;
172 // OpenCL Extensions.
173 def AsTypeExpr : DStmt<Expr>;