Clang Project

clang_source_code/include/clang/Basic/StmtNodes.td
1class AttrSubject;
2
3class Stmt<bit abstract = 0> : AttrSubject {
4  bit Abstract = abstract;
5}
6
7class DStmt<Stmt base, bit abstract = 0> : Stmt<abstract> {
8  Stmt Base = base;
9}
10
11// Statements
12def NullStmt : Stmt;
13def CompoundStmt : Stmt;
14def IfStmt : Stmt;
15def SwitchStmt : Stmt;
16def WhileStmt : Stmt;
17def DoStmt : Stmt;
18def ForStmt : Stmt;
19def GotoStmt : Stmt;
20def IndirectGotoStmt : Stmt;
21def ContinueStmt : Stmt;
22def BreakStmt : Stmt;
23def ReturnStmt : Stmt;
24def DeclStmt  : Stmt;
25def SwitchCase : Stmt<1>;
26def CaseStmt : DStmt<SwitchCase>;
27def DefaultStmt : DStmt<SwitchCase>;
28def CapturedStmt : Stmt;
29
30// Statements that might produce a value (for example, as the last non-null
31// statement in a GNU statement-expression).
32def ValueStmt : Stmt<1>;
33def LabelStmt : DStmt<ValueStmt>;
34def AttributedStmt : DStmt<ValueStmt>;
35
36// Asm statements
37def AsmStmt : Stmt<1>;
38def GCCAsmStmt : DStmt<AsmStmt>;
39def MSAsmStmt : DStmt<AsmStmt>;
40
41// Obj-C statements
42def ObjCAtTryStmt : Stmt;
43def ObjCAtCatchStmt : Stmt;
44def ObjCAtFinallyStmt : Stmt;
45def ObjCAtThrowStmt : Stmt;
46def ObjCAtSynchronizedStmt : Stmt;
47def ObjCForCollectionStmt : Stmt;
48def ObjCAutoreleasePoolStmt : Stmt;
49
50// C++ statements
51def CXXCatchStmt : Stmt;
52def CXXTryStmt : Stmt;
53def CXXForRangeStmt : Stmt;
54
55// C++ Coroutines TS statements
56def CoroutineBodyStmt : Stmt;
57def CoreturnStmt : Stmt;
58
59// Expressions
60def Expr : DStmt<ValueStmt, 1>;
61def PredefinedExpr : DStmt<Expr>;
62def DeclRefExpr : DStmt<Expr>;
63def IntegerLiteral : DStmt<Expr>;
64def FixedPointLiteral : DStmt<Expr>;
65def FloatingLiteral : DStmt<Expr>;
66def ImaginaryLiteral : DStmt<Expr>;
67def StringLiteral : DStmt<Expr>;
68def CharacterLiteral : DStmt<Expr>;
69def ParenExpr : DStmt<Expr>;
70def UnaryOperator : DStmt<Expr>;
71def OffsetOfExpr : DStmt<Expr>;
72def UnaryExprOrTypeTraitExpr : DStmt<Expr>;
73def ArraySubscriptExpr : DStmt<Expr>;
74def OMPArraySectionExpr : DStmt<Expr>;
75def CallExpr : DStmt<Expr>;
76def MemberExpr : DStmt<Expr>;
77def CastExpr : DStmt<Expr, 1>;
78def BinaryOperator : DStmt<Expr>;
79def CompoundAssignOperator : DStmt<BinaryOperator>;
80def AbstractConditionalOperator : DStmt<Expr, 1>;
81def ConditionalOperator : DStmt<AbstractConditionalOperator>;
82def BinaryConditionalOperator : DStmt<AbstractConditionalOperator>;
83def ImplicitCastExpr : DStmt<CastExpr>;
84def ExplicitCastExpr : DStmt<CastExpr, 1>;
85def CStyleCastExpr : DStmt<ExplicitCastExpr>;
86def CompoundLiteralExpr : DStmt<Expr>;
87def ExtVectorElementExpr : DStmt<Expr>;
88def InitListExpr : DStmt<Expr>;
89def DesignatedInitExpr : DStmt<Expr>;
90def DesignatedInitUpdateExpr : DStmt<Expr>;
91def ImplicitValueInitExpr : DStmt<Expr>;
92def NoInitExpr : DStmt<Expr>;
93def ArrayInitLoopExpr : DStmt<Expr>;
94def ArrayInitIndexExpr : DStmt<Expr>;
95def ParenListExpr : DStmt<Expr>;
96def VAArgExpr : DStmt<Expr>;
97def GenericSelectionExpr : DStmt<Expr>;
98def PseudoObjectExpr : DStmt<Expr>;
99
100// Wrapper expressions
101def FullExpr : DStmt<Expr, 1>;
102def ConstantExpr : DStmt<FullExpr>;
103
104// Atomic expressions
105def AtomicExpr : DStmt<Expr>;
106
107// GNU Extensions.
108def AddrLabelExpr : DStmt<Expr>;
109def StmtExpr : DStmt<Expr>;
110def ChooseExpr : DStmt<Expr>;
111def GNUNullExpr : DStmt<Expr>;
112
113// C++ Expressions.
114def CXXOperatorCallExpr : DStmt<CallExpr>;
115def CXXMemberCallExpr : DStmt<CallExpr>;
116def CXXNamedCastExpr : DStmt<ExplicitCastExpr, 1>;
117def CXXStaticCastExpr : DStmt<CXXNamedCastExpr>;
118def CXXDynamicCastExpr : DStmt<CXXNamedCastExpr>;
119def CXXReinterpretCastExpr : DStmt<CXXNamedCastExpr>;
120def CXXConstCastExpr : DStmt<CXXNamedCastExpr>;
121def CXXFunctionalCastExpr : DStmt<ExplicitCastExpr>;
122def CXXTypeidExpr : DStmt<Expr>;
123def UserDefinedLiteral : DStmt<CallExpr>;
124def CXXBoolLiteralExpr : DStmt<Expr>;
125def CXXNullPtrLiteralExpr : DStmt<Expr>;
126def CXXThisExpr : DStmt<Expr>;
127def CXXThrowExpr : DStmt<Expr>;
128def CXXDefaultArgExpr : DStmt<Expr>;
129def CXXDefaultInitExpr : DStmt<Expr>;
130def CXXScalarValueInitExpr : DStmt<Expr>;
131def CXXStdInitializerListExpr : DStmt<Expr>;
132def CXXNewExpr : DStmt<Expr>;
133def CXXDeleteExpr : DStmt<Expr>;
134def CXXPseudoDestructorExpr : DStmt<Expr>;
135def TypeTraitExpr : DStmt<Expr>;
136def ArrayTypeTraitExpr : DStmt<Expr>;
137def ExpressionTraitExpr : DStmt<Expr>;
138def DependentScopeDeclRefExpr : DStmt<Expr>;
139def CXXConstructExpr : DStmt<Expr>;
140def CXXInheritedCtorInitExpr : DStmt<Expr>;
141def CXXBindTemporaryExpr : DStmt<Expr>;
142def ExprWithCleanups : DStmt<FullExpr>;
143def CXXTemporaryObjectExpr : DStmt<CXXConstructExpr>;
144def CXXUnresolvedConstructExpr : DStmt<Expr>;
145def CXXDependentScopeMemberExpr : DStmt<Expr>;
146def OverloadExpr : DStmt<Expr, 1>;
147def UnresolvedLookupExpr : DStmt<OverloadExpr>;
148def UnresolvedMemberExpr : DStmt<OverloadExpr>;
149def CXXNoexceptExpr : DStmt<Expr>;
150def PackExpansionExpr : DStmt<Expr>;
151def SizeOfPackExpr : DStmt<Expr>;
152def SubstNonTypeTemplateParmExpr : DStmt<Expr>;
153def SubstNonTypeTemplateParmPackExpr : DStmt<Expr>;
154def FunctionParmPackExpr : DStmt<Expr>;
155def MaterializeTemporaryExpr : DStmt<Expr>;
156def LambdaExpr : DStmt<Expr>;
157def CXXFoldExpr : DStmt<Expr>;
158
159// C++ Coroutines TS expressions
160def CoroutineSuspendExpr : DStmt<Expr, 1>;
161def CoawaitExpr : DStmt<CoroutineSuspendExpr>;
162def DependentCoawaitExpr : DStmt<Expr>;
163def CoyieldExpr : DStmt<CoroutineSuspendExpr>;
164
165// Obj-C Expressions.
166def ObjCStringLiteral : DStmt<Expr>;
167def ObjCBoxedExpr : DStmt<Expr>;
168def ObjCArrayLiteral : DStmt<Expr>;
169def ObjCDictionaryLiteral : DStmt<Expr>;
170def ObjCEncodeExpr : DStmt<Expr>;
171def ObjCMessageExpr : DStmt<Expr>;
172def ObjCSelectorExpr : DStmt<Expr>;
173def ObjCProtocolExpr : DStmt<Expr>;
174def ObjCIvarRefExpr : DStmt<Expr>;
175def ObjCPropertyRefExpr : DStmt<Expr>;
176def ObjCIsaExpr : DStmt<Expr>;
177def ObjCIndirectCopyRestoreExpr : DStmt<Expr>;
178def ObjCBoolLiteralExpr : DStmt<Expr>;
179def ObjCSubscriptRefExpr : DStmt<Expr>;
180def ObjCAvailabilityCheckExpr : DStmt<Expr>;
181
182// Obj-C ARC Expressions.
183def ObjCBridgedCastExpr : DStmt<ExplicitCastExpr>;
184
185// CUDA Expressions.
186def CUDAKernelCallExpr : DStmt<CallExpr>;
187
188// Clang Extensions.
189def ShuffleVectorExpr : DStmt<Expr>;
190def ConvertVectorExpr : DStmt<Expr>;
191def BlockExpr : DStmt<Expr>;
192def OpaqueValueExpr : DStmt<Expr>;
193def TypoExpr : DStmt<Expr>;
194
195// Microsoft Extensions.
196def MSPropertyRefExpr : DStmt<Expr>;
197def MSPropertySubscriptExpr : DStmt<Expr>;
198def CXXUuidofExpr : DStmt<Expr>;
199def SEHTryStmt : Stmt;
200def SEHExceptStmt : Stmt;
201def SEHFinallyStmt : Stmt;
202def SEHLeaveStmt : Stmt;
203def MSDependentExistsStmt : Stmt;
204
205// OpenCL Extensions.
206def AsTypeExpr : DStmt<Expr>;
207
208// OpenMP Directives.
209def OMPExecutableDirective : Stmt<1>;
210def OMPLoopDirective : DStmt<OMPExecutableDirective, 1>;
211def OMPParallelDirective : DStmt<OMPExecutableDirective>;
212def OMPSimdDirective : DStmt<OMPLoopDirective>;
213def OMPForDirective : DStmt<OMPLoopDirective>;
214def OMPForSimdDirective : DStmt<OMPLoopDirective>;
215def OMPSectionsDirective : DStmt<OMPExecutableDirective>;
216def OMPSectionDirective : DStmt<OMPExecutableDirective>;
217def OMPSingleDirective : DStmt<OMPExecutableDirective>;
218def OMPMasterDirective : DStmt<OMPExecutableDirective>;
219def OMPCriticalDirective : DStmt<OMPExecutableDirective>;
220def OMPParallelForDirective : DStmt<OMPLoopDirective>;
221def OMPParallelForSimdDirective : DStmt<OMPLoopDirective>;
222def OMPParallelSectionsDirective : DStmt<OMPExecutableDirective>;
223def OMPTaskDirective : DStmt<OMPExecutableDirective>;
224def OMPTaskyieldDirective : DStmt<OMPExecutableDirective>;
225def OMPBarrierDirective : DStmt<OMPExecutableDirective>;
226def OMPTaskwaitDirective : DStmt<OMPExecutableDirective>;
227def OMPTaskgroupDirective : DStmt<OMPExecutableDirective>;
228def OMPFlushDirective : DStmt<OMPExecutableDirective>;
229def OMPOrderedDirective : DStmt<OMPExecutableDirective>;
230def OMPAtomicDirective : DStmt<OMPExecutableDirective>;
231def OMPTargetDirective : DStmt<OMPExecutableDirective>;
232def OMPTargetDataDirective : DStmt<OMPExecutableDirective>;
233def OMPTargetEnterDataDirective : DStmt<OMPExecutableDirective>;
234def OMPTargetExitDataDirective : DStmt<OMPExecutableDirective>;
235def OMPTargetParallelDirective : DStmt<OMPExecutableDirective>;
236def OMPTargetParallelForDirective : DStmt<OMPExecutableDirective>;
237def OMPTargetUpdateDirective : DStmt<OMPExecutableDirective>;
238def OMPTeamsDirective : DStmt<OMPExecutableDirective>;
239def OMPCancellationPointDirective : DStmt<OMPExecutableDirective>;
240def OMPCancelDirective : DStmt<OMPExecutableDirective>;
241def OMPTaskLoopDirective : DStmt<OMPLoopDirective>;
242def OMPTaskLoopSimdDirective : DStmt<OMPLoopDirective>;
243def OMPDistributeDirective : DStmt<OMPLoopDirective>;
244def OMPDistributeParallelForDirective : DStmt<OMPLoopDirective>;
245def OMPDistributeParallelForSimdDirective : DStmt<OMPLoopDirective>;
246def OMPDistributeSimdDirective : DStmt<OMPLoopDirective>;
247def OMPTargetParallelForSimdDirective : DStmt<OMPLoopDirective>;
248def OMPTargetSimdDirective : DStmt<OMPLoopDirective>;
249def OMPTeamsDistributeDirective : DStmt<OMPLoopDirective>;
250def OMPTeamsDistributeSimdDirective : DStmt<OMPLoopDirective>;
251def OMPTeamsDistributeParallelForSimdDirective : DStmt<OMPLoopDirective>;
252def OMPTeamsDistributeParallelForDirective : DStmt<OMPLoopDirective>;
253def OMPTargetTeamsDirective : DStmt<OMPExecutableDirective>;
254def OMPTargetTeamsDistributeDirective : DStmt<OMPLoopDirective>;
255def OMPTargetTeamsDistributeParallelForDirective : DStmt<OMPLoopDirective>;
256def OMPTargetTeamsDistributeParallelForSimdDirective : DStmt<OMPLoopDirective>;
257def OMPTargetTeamsDistributeSimdDirective : DStmt<OMPLoopDirective>;
258