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;
16 def SwitchStmt : Stmt;
21 def IndirectGotoStmt : Stmt;
22 def ContinueStmt : Stmt;
24 def ReturnStmt : Stmt;
26 def SwitchCase : Stmt<1>;
27 def CaseStmt : DStmt<SwitchCase>;
28 def DefaultStmt : DStmt<SwitchCase>;
34 def ObjCAtTryStmt : Stmt;
35 def ObjCAtCatchStmt : Stmt;
36 def ObjCAtFinallyStmt : Stmt;
37 def ObjCAtThrowStmt : Stmt;
38 def ObjCAtSynchronizedStmt : Stmt;
39 def ObjCForCollectionStmt : Stmt;
42 def CXXCatchStmt : Stmt;
43 def CXXTryStmt : Stmt;
44 def CXXForRangeStmt : Stmt;
48 def PredefinedExpr : DStmt<Expr>;
49 def DeclRefExpr : DStmt<Expr>;
50 def IntegerLiteral : DStmt<Expr>;
51 def FloatingLiteral : DStmt<Expr>;
52 def ImaginaryLiteral : DStmt<Expr>;
53 def StringLiteral : DStmt<Expr>;
54 def CharacterLiteral : DStmt<Expr>;
55 def ParenExpr : DStmt<Expr>;
56 def UnaryOperator : DStmt<Expr>;
57 def OffsetOfExpr : DStmt<Expr>;
58 def UnaryExprOrTypeTraitExpr : DStmt<Expr>;
59 def ArraySubscriptExpr : DStmt<Expr>;
60 def CallExpr : DStmt<Expr>;
61 def MemberExpr : DStmt<Expr>;
62 def CastExpr : DStmt<Expr, 1>;
63 def BinaryOperator : DStmt<Expr>;
64 def CompoundAssignOperator : DStmt<BinaryOperator>;
65 def AbstractConditionalOperator : DStmt<Expr, 1>;
66 def ConditionalOperator : DStmt<AbstractConditionalOperator>;
67 def BinaryConditionalOperator : DStmt<AbstractConditionalOperator>;
68 def ImplicitCastExpr : DStmt<CastExpr>;
69 def ExplicitCastExpr : DStmt<CastExpr, 1>;
70 def CStyleCastExpr : DStmt<ExplicitCastExpr>;
71 def CompoundLiteralExpr : DStmt<Expr>;
72 def ExtVectorElementExpr : DStmt<Expr>;
73 def InitListExpr : DStmt<Expr>;
74 def DesignatedInitExpr : DStmt<Expr>;
75 def ImplicitValueInitExpr : DStmt<Expr>;
76 def ParenListExpr : DStmt<Expr>;
77 def VAArgExpr : DStmt<Expr>;
78 def GenericSelectionExpr : DStmt<Expr>;
81 def AddrLabelExpr : DStmt<Expr>;
82 def StmtExpr : DStmt<Expr>;
83 def ChooseExpr : DStmt<Expr>;
84 def GNUNullExpr : DStmt<Expr>;
87 def CXXOperatorCallExpr : DStmt<CallExpr>;
88 def CXXMemberCallExpr : DStmt<CallExpr>;
89 def CXXNamedCastExpr : DStmt<ExplicitCastExpr, 1>;
90 def CXXStaticCastExpr : DStmt<CXXNamedCastExpr>;
91 def CXXDynamicCastExpr : DStmt<CXXNamedCastExpr>;
92 def CXXReinterpretCastExpr : DStmt<CXXNamedCastExpr>;
93 def CXXConstCastExpr : DStmt<CXXNamedCastExpr>;
94 def CXXFunctionalCastExpr : DStmt<ExplicitCastExpr>;
95 def CXXTypeidExpr : DStmt<Expr>;
96 def CXXBoolLiteralExpr : DStmt<Expr>;
97 def CXXNullPtrLiteralExpr : DStmt<Expr>;
98 def CXXThisExpr : DStmt<Expr>;
99 def CXXThrowExpr : DStmt<Expr>;
100 def CXXDefaultArgExpr : DStmt<Expr>;
101 def CXXScalarValueInitExpr : DStmt<Expr>;
102 def CXXNewExpr : DStmt<Expr>;
103 def CXXDeleteExpr : DStmt<Expr>;
104 def CXXPseudoDestructorExpr : DStmt<Expr>;
105 def UnaryTypeTraitExpr : DStmt<Expr>;
106 def BinaryTypeTraitExpr : DStmt<Expr>;
107 def ArrayTypeTraitExpr : DStmt<Expr>;
108 def ExpressionTraitExpr : DStmt<Expr>;
109 def DependentScopeDeclRefExpr : DStmt<Expr>;
110 def CXXConstructExpr : DStmt<Expr>;
111 def CXXBindTemporaryExpr : DStmt<Expr>;
112 def ExprWithCleanups : DStmt<Expr>;
113 def CXXTemporaryObjectExpr : DStmt<CXXConstructExpr>;
114 def CXXUnresolvedConstructExpr : DStmt<Expr>;
115 def CXXDependentScopeMemberExpr : DStmt<Expr>;
116 def OverloadExpr : DStmt<Expr, 1>;
117 def UnresolvedLookupExpr : DStmt<OverloadExpr>;
118 def UnresolvedMemberExpr : DStmt<OverloadExpr>;
119 def CXXNoexceptExpr : DStmt<Expr>;
120 def PackExpansionExpr : DStmt<Expr>;
121 def SizeOfPackExpr : DStmt<Expr>;
122 def SubstNonTypeTemplateParmPackExpr : DStmt<Expr>;
124 // Obj-C Expressions.
125 def ObjCStringLiteral : DStmt<Expr>;
126 def ObjCEncodeExpr : DStmt<Expr>;
127 def ObjCMessageExpr : DStmt<Expr>;
128 def ObjCSelectorExpr : DStmt<Expr>;
129 def ObjCProtocolExpr : DStmt<Expr>;
130 def ObjCIvarRefExpr : DStmt<Expr>;
131 def ObjCPropertyRefExpr : DStmt<Expr>;
132 def ObjCIsaExpr : DStmt<Expr>;
135 def CUDAKernelCallExpr : DStmt<CallExpr>;
138 def ShuffleVectorExpr : DStmt<Expr>;
139 def BlockExpr : DStmt<Expr>;
140 def BlockDeclRefExpr : DStmt<Expr>;
141 def OpaqueValueExpr : DStmt<Expr>;
143 // Microsoft Extensions.
144 def CXXUuidofExpr : DStmt<Expr>;
145 def SEHTryStmt : Stmt;
146 def SEHExceptStmt : Stmt;
147 def SEHFinallyStmt : Stmt;