]> CyberLeo.Net >> Repos - FreeBSD/stable/9.git/blob - contrib/llvm/tools/clang/include/clang/Basic/StmtNodes.td
Copy head to stable/9 as part of 9.0-RELEASE release cycle.
[FreeBSD/stable/9.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 IfStmt : Stmt;
16 def SwitchStmt : Stmt;
17 def WhileStmt : Stmt;
18 def DoStmt : Stmt;
19 def ForStmt : Stmt;
20 def GotoStmt : Stmt;
21 def IndirectGotoStmt : Stmt;
22 def ContinueStmt : Stmt;
23 def BreakStmt : Stmt;
24 def ReturnStmt : Stmt;
25 def DeclStmt  : Stmt;
26 def SwitchCase : Stmt<1>;
27 def CaseStmt : DStmt<SwitchCase>;
28 def DefaultStmt : DStmt<SwitchCase>;
29
30 // GNU Extensions
31 def AsmStmt : Stmt;
32
33 // Obj-C statements
34 def ObjCAtTryStmt : Stmt;
35 def ObjCAtCatchStmt : Stmt;
36 def ObjCAtFinallyStmt : Stmt;
37 def ObjCAtThrowStmt : Stmt;
38 def ObjCAtSynchronizedStmt : Stmt;
39 def ObjCForCollectionStmt : Stmt;
40 def ObjCAutoreleasePoolStmt : Stmt;
41
42 // C++ statments
43 def CXXCatchStmt : Stmt;
44 def CXXTryStmt : Stmt;
45 def CXXForRangeStmt : Stmt;
46
47 // Expressions
48 def Expr : Stmt<1>;
49 def PredefinedExpr : DStmt<Expr>;
50 def DeclRefExpr : DStmt<Expr>;
51 def IntegerLiteral : DStmt<Expr>;
52 def FloatingLiteral : DStmt<Expr>;
53 def ImaginaryLiteral : DStmt<Expr>;
54 def StringLiteral : DStmt<Expr>;
55 def CharacterLiteral : DStmt<Expr>;
56 def ParenExpr : DStmt<Expr>;
57 def UnaryOperator : DStmt<Expr>;
58 def OffsetOfExpr : DStmt<Expr>;
59 def UnaryExprOrTypeTraitExpr : DStmt<Expr>;
60 def ArraySubscriptExpr : DStmt<Expr>;
61 def CallExpr : DStmt<Expr>;
62 def MemberExpr : DStmt<Expr>;
63 def CastExpr : DStmt<Expr, 1>;
64 def BinaryOperator : DStmt<Expr>;
65 def CompoundAssignOperator : DStmt<BinaryOperator>;
66 def AbstractConditionalOperator : DStmt<Expr, 1>;
67 def ConditionalOperator : DStmt<AbstractConditionalOperator>;
68 def BinaryConditionalOperator : DStmt<AbstractConditionalOperator>;
69 def ImplicitCastExpr : DStmt<CastExpr>;
70 def ExplicitCastExpr : DStmt<CastExpr, 1>;
71 def CStyleCastExpr : DStmt<ExplicitCastExpr>;
72 def CompoundLiteralExpr : DStmt<Expr>;
73 def ExtVectorElementExpr : DStmt<Expr>;
74 def InitListExpr : DStmt<Expr>;
75 def DesignatedInitExpr : DStmt<Expr>;
76 def ImplicitValueInitExpr : DStmt<Expr>;
77 def ParenListExpr : DStmt<Expr>;
78 def VAArgExpr : DStmt<Expr>;
79 def GenericSelectionExpr : DStmt<Expr>;
80
81 // GNU Extensions.
82 def AddrLabelExpr : DStmt<Expr>;
83 def StmtExpr : DStmt<Expr>;
84 def ChooseExpr : DStmt<Expr>;
85 def GNUNullExpr : DStmt<Expr>;
86
87 // C++ Expressions.
88 def CXXOperatorCallExpr : DStmt<CallExpr>;
89 def CXXMemberCallExpr : DStmt<CallExpr>;
90 def CXXNamedCastExpr : DStmt<ExplicitCastExpr, 1>;
91 def CXXStaticCastExpr : DStmt<CXXNamedCastExpr>;
92 def CXXDynamicCastExpr : DStmt<CXXNamedCastExpr>;
93 def CXXReinterpretCastExpr : DStmt<CXXNamedCastExpr>;
94 def CXXConstCastExpr : DStmt<CXXNamedCastExpr>;
95 def CXXFunctionalCastExpr : DStmt<ExplicitCastExpr>;
96 def CXXTypeidExpr : DStmt<Expr>;
97 def CXXBoolLiteralExpr : DStmt<Expr>;
98 def CXXNullPtrLiteralExpr : DStmt<Expr>;
99 def CXXThisExpr : DStmt<Expr>;
100 def CXXThrowExpr : DStmt<Expr>;
101 def CXXDefaultArgExpr : DStmt<Expr>;
102 def CXXScalarValueInitExpr : DStmt<Expr>;
103 def CXXNewExpr : DStmt<Expr>;
104 def CXXDeleteExpr : DStmt<Expr>;
105 def CXXPseudoDestructorExpr : DStmt<Expr>;
106 def UnaryTypeTraitExpr : DStmt<Expr>;
107 def BinaryTypeTraitExpr : DStmt<Expr>;
108 def ArrayTypeTraitExpr : DStmt<Expr>;
109 def ExpressionTraitExpr : DStmt<Expr>;
110 def DependentScopeDeclRefExpr : DStmt<Expr>;
111 def CXXConstructExpr : DStmt<Expr>;
112 def CXXBindTemporaryExpr : DStmt<Expr>;
113 def ExprWithCleanups : DStmt<Expr>;
114 def CXXTemporaryObjectExpr : DStmt<CXXConstructExpr>;
115 def CXXUnresolvedConstructExpr : DStmt<Expr>;
116 def CXXDependentScopeMemberExpr : DStmt<Expr>;
117 def OverloadExpr : DStmt<Expr, 1>;
118 def UnresolvedLookupExpr : DStmt<OverloadExpr>;
119 def UnresolvedMemberExpr : DStmt<OverloadExpr>;
120 def CXXNoexceptExpr : DStmt<Expr>;
121 def PackExpansionExpr : DStmt<Expr>;
122 def SizeOfPackExpr : DStmt<Expr>;
123 def SubstNonTypeTemplateParmExpr : DStmt<Expr>;
124 def SubstNonTypeTemplateParmPackExpr : DStmt<Expr>;
125 def MaterializeTemporaryExpr : DStmt<Expr>;
126
127 // Obj-C Expressions.
128 def ObjCStringLiteral : DStmt<Expr>;
129 def ObjCEncodeExpr : DStmt<Expr>;
130 def ObjCMessageExpr : DStmt<Expr>;
131 def ObjCSelectorExpr : DStmt<Expr>;
132 def ObjCProtocolExpr : DStmt<Expr>;
133 def ObjCIvarRefExpr : DStmt<Expr>;
134 def ObjCPropertyRefExpr : DStmt<Expr>;
135 def ObjCIsaExpr : DStmt<Expr>;
136 def ObjCIndirectCopyRestoreExpr : DStmt<Expr>;
137
138 // Obj-C ARC Expressions.
139 def ObjCBridgedCastExpr : DStmt<ExplicitCastExpr>;
140
141 // CUDA Expressions.
142 def CUDAKernelCallExpr : DStmt<CallExpr>;
143
144 // Clang Extensions.
145 def ShuffleVectorExpr : DStmt<Expr>;
146 def BlockExpr : DStmt<Expr>;
147 def BlockDeclRefExpr : DStmt<Expr>;
148 def OpaqueValueExpr : DStmt<Expr>;
149
150 // Microsoft Extensions.
151 def CXXUuidofExpr : DStmt<Expr>; 
152 def SEHTryStmt : Stmt;
153 def SEHExceptStmt : Stmt;
154 def SEHFinallyStmt : Stmt;
155
156 // OpenCL Extensions.
157 def AsTypeExpr : DStmt<Expr>;