]> CyberLeo.Net >> Repos - FreeBSD/releng/10.2.git/blob - contrib/llvm/tools/clang/include/clang/Basic/StmtNodes.td
- Copy stable/10@285827 to releng/10.2 in preparation for 10.2-RC1
[FreeBSD/releng/10.2.git] / contrib / llvm / tools / clang / include / clang / Basic / StmtNodes.td
1 class AttrSubject;
2
3 class Stmt<bit abstract = 0> : AttrSubject {
4   bit Abstract = abstract;
5 }
6
7 class DStmt<Stmt base, bit abstract = 0> : Stmt<abstract> {
8   Stmt Base = base;
9 }
10
11 // Statements
12 def NullStmt : Stmt;
13 def CompoundStmt : Stmt;
14 def LabelStmt : Stmt;
15 def AttributedStmt : Stmt;
16 def IfStmt : Stmt;
17 def SwitchStmt : Stmt;
18 def WhileStmt : Stmt;
19 def DoStmt : Stmt;
20 def ForStmt : Stmt;
21 def GotoStmt : Stmt;
22 def IndirectGotoStmt : Stmt;
23 def ContinueStmt : Stmt;
24 def BreakStmt : Stmt;
25 def ReturnStmt : Stmt;
26 def DeclStmt  : Stmt;
27 def SwitchCase : Stmt<1>;
28 def CaseStmt : DStmt<SwitchCase>;
29 def DefaultStmt : DStmt<SwitchCase>;
30 def CapturedStmt : Stmt;
31
32 // Asm statements
33 def AsmStmt : Stmt<1>;
34 def GCCAsmStmt : DStmt<AsmStmt>;
35 def MSAsmStmt : DStmt<AsmStmt>;
36
37 // Obj-C statements
38 def ObjCAtTryStmt : Stmt;
39 def ObjCAtCatchStmt : Stmt;
40 def ObjCAtFinallyStmt : Stmt;
41 def ObjCAtThrowStmt : Stmt;
42 def ObjCAtSynchronizedStmt : Stmt;
43 def ObjCForCollectionStmt : Stmt;
44 def ObjCAutoreleasePoolStmt : Stmt;
45
46 // C++ statments
47 def CXXCatchStmt : Stmt;
48 def CXXTryStmt : Stmt;
49 def CXXForRangeStmt : Stmt;
50
51 // Expressions
52 def Expr : Stmt<1>;
53 def PredefinedExpr : DStmt<Expr>;
54 def DeclRefExpr : DStmt<Expr>;
55 def IntegerLiteral : DStmt<Expr>;
56 def FloatingLiteral : DStmt<Expr>;
57 def ImaginaryLiteral : DStmt<Expr>;
58 def StringLiteral : DStmt<Expr>;
59 def CharacterLiteral : DStmt<Expr>;
60 def ParenExpr : DStmt<Expr>;
61 def UnaryOperator : DStmt<Expr>;
62 def OffsetOfExpr : DStmt<Expr>;
63 def UnaryExprOrTypeTraitExpr : DStmt<Expr>;
64 def ArraySubscriptExpr : DStmt<Expr>;
65 def CallExpr : DStmt<Expr>;
66 def MemberExpr : DStmt<Expr>;
67 def CastExpr : DStmt<Expr, 1>;
68 def BinaryOperator : DStmt<Expr>;
69 def CompoundAssignOperator : DStmt<BinaryOperator>;
70 def AbstractConditionalOperator : DStmt<Expr, 1>;
71 def ConditionalOperator : DStmt<AbstractConditionalOperator>;
72 def BinaryConditionalOperator : DStmt<AbstractConditionalOperator>;
73 def ImplicitCastExpr : DStmt<CastExpr>;
74 def ExplicitCastExpr : DStmt<CastExpr, 1>;
75 def CStyleCastExpr : DStmt<ExplicitCastExpr>;
76 def CompoundLiteralExpr : DStmt<Expr>;
77 def ExtVectorElementExpr : DStmt<Expr>;
78 def InitListExpr : DStmt<Expr>;
79 def DesignatedInitExpr : DStmt<Expr>;
80 def ImplicitValueInitExpr : DStmt<Expr>;
81 def ParenListExpr : DStmt<Expr>;
82 def VAArgExpr : DStmt<Expr>;
83 def GenericSelectionExpr : DStmt<Expr>;
84 def PseudoObjectExpr : DStmt<Expr>;
85
86 // Atomic expressions
87 def AtomicExpr : DStmt<Expr>;
88
89 // GNU Extensions.
90 def AddrLabelExpr : DStmt<Expr>;
91 def StmtExpr : DStmt<Expr>;
92 def ChooseExpr : DStmt<Expr>;
93 def GNUNullExpr : DStmt<Expr>;
94
95 // C++ Expressions.
96 def CXXOperatorCallExpr : DStmt<CallExpr>;
97 def CXXMemberCallExpr : DStmt<CallExpr>;
98 def CXXNamedCastExpr : DStmt<ExplicitCastExpr, 1>;
99 def CXXStaticCastExpr : DStmt<CXXNamedCastExpr>;
100 def CXXDynamicCastExpr : DStmt<CXXNamedCastExpr>;
101 def CXXReinterpretCastExpr : DStmt<CXXNamedCastExpr>;
102 def CXXConstCastExpr : DStmt<CXXNamedCastExpr>;
103 def CXXFunctionalCastExpr : DStmt<ExplicitCastExpr>;
104 def CXXTypeidExpr : DStmt<Expr>;
105 def UserDefinedLiteral : DStmt<CallExpr>;
106 def CXXBoolLiteralExpr : DStmt<Expr>;
107 def CXXNullPtrLiteralExpr : DStmt<Expr>;
108 def CXXThisExpr : DStmt<Expr>;
109 def CXXThrowExpr : DStmt<Expr>;
110 def CXXDefaultArgExpr : DStmt<Expr>;
111 def CXXDefaultInitExpr : DStmt<Expr>;
112 def CXXScalarValueInitExpr : DStmt<Expr>;
113 def CXXStdInitializerListExpr : DStmt<Expr>;
114 def CXXNewExpr : DStmt<Expr>;
115 def CXXDeleteExpr : DStmt<Expr>;
116 def CXXPseudoDestructorExpr : DStmt<Expr>;
117 def TypeTraitExpr : DStmt<Expr>;
118 def UnaryTypeTraitExpr : DStmt<Expr>;
119 def BinaryTypeTraitExpr : DStmt<Expr>;
120 def ArrayTypeTraitExpr : DStmt<Expr>;
121 def ExpressionTraitExpr : DStmt<Expr>;
122 def DependentScopeDeclRefExpr : DStmt<Expr>;
123 def CXXConstructExpr : DStmt<Expr>;
124 def CXXBindTemporaryExpr : DStmt<Expr>;
125 def ExprWithCleanups : DStmt<Expr>;
126 def CXXTemporaryObjectExpr : DStmt<CXXConstructExpr>;
127 def CXXUnresolvedConstructExpr : DStmt<Expr>;
128 def CXXDependentScopeMemberExpr : DStmt<Expr>;
129 def OverloadExpr : DStmt<Expr, 1>;
130 def UnresolvedLookupExpr : DStmt<OverloadExpr>;
131 def UnresolvedMemberExpr : DStmt<OverloadExpr>;
132 def CXXNoexceptExpr : DStmt<Expr>;
133 def PackExpansionExpr : DStmt<Expr>;
134 def SizeOfPackExpr : DStmt<Expr>;
135 def SubstNonTypeTemplateParmExpr : DStmt<Expr>;
136 def SubstNonTypeTemplateParmPackExpr : DStmt<Expr>;
137 def FunctionParmPackExpr : DStmt<Expr>;
138 def MaterializeTemporaryExpr : DStmt<Expr>;
139 def LambdaExpr : DStmt<Expr>;
140
141 // Obj-C Expressions.
142 def ObjCStringLiteral : DStmt<Expr>;
143 def ObjCBoxedExpr : DStmt<Expr>;
144 def ObjCArrayLiteral : DStmt<Expr>;
145 def ObjCDictionaryLiteral : DStmt<Expr>;
146 def ObjCEncodeExpr : DStmt<Expr>;
147 def ObjCMessageExpr : DStmt<Expr>;
148 def ObjCSelectorExpr : DStmt<Expr>;
149 def ObjCProtocolExpr : DStmt<Expr>;
150 def ObjCIvarRefExpr : DStmt<Expr>;
151 def ObjCPropertyRefExpr : DStmt<Expr>;
152 def ObjCIsaExpr : DStmt<Expr>;
153 def ObjCIndirectCopyRestoreExpr : DStmt<Expr>;
154 def ObjCBoolLiteralExpr : DStmt<Expr>;
155 def ObjCSubscriptRefExpr : DStmt<Expr>;
156
157 // Obj-C ARC Expressions.
158 def ObjCBridgedCastExpr : DStmt<ExplicitCastExpr>;
159
160 // CUDA Expressions.
161 def CUDAKernelCallExpr : DStmt<CallExpr>;
162
163 // Clang Extensions.
164 def ShuffleVectorExpr : DStmt<Expr>;
165 def ConvertVectorExpr : DStmt<Expr>;
166 def BlockExpr : DStmt<Expr>;
167 def OpaqueValueExpr : DStmt<Expr>;
168
169 // Microsoft Extensions.
170 def MSPropertyRefExpr : DStmt<Expr>;
171 def CXXUuidofExpr : DStmt<Expr>; 
172 def SEHTryStmt : Stmt;
173 def SEHExceptStmt : Stmt;
174 def SEHFinallyStmt : Stmt;
175 def MSDependentExistsStmt : Stmt;
176
177 // OpenCL Extensions.
178 def AsTypeExpr : DStmt<Expr>;
179
180 // OpenMP Directives.
181 def OMPExecutableDirective : Stmt<1>;
182 def OMPParallelDirective : DStmt<OMPExecutableDirective>;