gccrs: Add HIR definitions and visitor framework
[official-gcc.git] / gcc / rust / hir / tree / rust-hir-full-decls.h
blob2798ba9fd8483d46580dd087bc55ef40e598611b
1 // Copyright (C) 2020-2022 Free Software Foundation, Inc.
3 // This file is part of GCC.
5 // GCC is free software; you can redistribute it and/or modify it under
6 // the terms of the GNU General Public License as published by the Free
7 // Software Foundation; either version 3, or (at your option) any later
8 // version.
10 // GCC is distributed in the hope that it will be useful, but WITHOUT ANY
11 // WARRANTY; without even the implied warranty of MERCHANTABILITY or
12 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
13 // for more details.
15 // You should have received a copy of the GNU General Public License
16 // along with GCC; see the file COPYING3. If not see
17 // <http://www.gnu.org/licenses/>.
19 #ifndef RUST_HIR_FULL_DECLS_H
20 #define RUST_HIR_FULL_DECLS_H
22 namespace Rust {
23 namespace HIR {
25 struct Literal;
26 class Stmt;
27 class Item;
28 class Expr;
29 class ExprWithoutBlock;
30 class Pattern;
31 class Type;
32 class TypeNoBounds;
33 class TypeParamBound;
34 class Lifetime;
35 class GenericParam;
36 class LifetimeParam;
38 class TraitItem;
39 class ImplItem;
40 struct Crate;
41 class PathExpr;
43 // rust-path.h
44 class PathIdentSegment;
45 struct GenericArgsBinding;
46 struct GenericArgs;
47 class PathExprSegment;
48 class PathPattern;
49 class PathInExpression;
50 class TypePathSegment;
51 class TypePathSegmentGeneric;
52 struct TypePathFunction;
53 class TypePathSegmentFunction;
54 class TypePath;
55 struct QualifiedPathType;
56 class QualifiedPathInExpression;
57 class QualifiedPathInType;
59 // rust-expr.h
60 class ExprWithBlock;
61 class LiteralExpr;
62 class AttrInputLiteral;
63 class OperatorExpr;
64 class BorrowExpr;
65 class DereferenceExpr;
66 class ErrorPropagationExpr;
67 class NegationExpr;
68 class ArithmeticOrLogicalExpr;
69 class ComparisonExpr;
70 class LazyBooleanExpr;
71 class TypeCastExpr;
72 class AssignmentExpr;
73 class CompoundAssignmentExpr;
74 class GroupedExpr;
75 class ArrayElems;
76 class ArrayElemsValues;
77 class ArrayElemsCopied;
78 class ArrayExpr;
79 class ArrayIndexExpr;
80 class TupleExpr;
81 class TupleIndexExpr;
82 class StructExpr;
83 class StructExprStruct;
84 struct StructBase;
85 class StructExprField;
86 class StructExprFieldIdentifier;
87 class StructExprFieldWithVal;
88 class StructExprFieldIdentifierValue;
89 class StructExprFieldIndexValue;
90 class StructExprStructFields;
91 class StructExprStructBase;
92 class CallExpr;
93 class MethodCallExpr;
94 class FieldAccessExpr;
95 struct ClosureParam;
96 class ClosureExpr;
97 class ClosureExprInner;
98 class BlockExpr;
99 class ClosureExprInnerTyped;
100 class ContinueExpr;
101 class BreakExpr;
102 class RangeExpr;
103 class RangeFromToExpr;
104 class RangeFromExpr;
105 class RangeToExpr;
106 class RangeFullExpr;
107 class RangeFromToInclExpr;
108 class RangeToInclExpr;
109 class ReturnExpr;
110 class UnsafeBlockExpr;
111 class LoopLabel;
112 class BaseLoopExpr;
113 class LoopExpr;
114 class WhileLoopExpr;
115 class WhileLetLoopExpr;
116 class ForLoopExpr;
117 class IfExpr;
118 class IfExprConseqElse;
119 class IfExprConseqIf;
120 class IfLetExpr;
121 class IfExprConseqIfLet;
122 class IfLetExprConseqElse;
123 class IfLetExprConseqIf;
124 class IfLetExprConseqIfLet;
125 struct MatchArm;
126 // class MatchCase;
127 // class MatchCaseBlockExpr;
128 // class MatchCaseExpr;
129 struct MatchCase;
130 class MatchExpr;
131 class AwaitExpr;
132 class AsyncBlockExpr;
134 // rust-stmt.h
135 class EmptyStmt;
136 class LetStmt;
137 class ExprStmt;
138 class ExprStmtWithoutBlock;
139 class ExprStmtWithBlock;
141 // rust-item.h
142 class TypeParam;
143 class ConstGenericParam;
144 class WhereClauseItem;
145 class LifetimeWhereClauseItem;
146 class TypeBoundWhereClauseItem;
147 struct WhereClause;
148 struct SelfParam;
149 struct FunctionQualifiers;
150 struct FunctionParam;
151 struct Visibility;
152 class VisItem;
153 class Module;
154 class ExternCrate;
155 class UseTree;
156 class UseTreeGlob;
157 class UseTreeList;
158 class UseTreeRebind;
159 class UseDeclaration;
160 class Function;
161 class TypeAlias;
162 class Struct;
163 struct StructField;
164 class StructStruct;
165 struct TupleField;
166 class TupleStruct;
167 class EnumItem;
168 class EnumItemTuple;
169 class EnumItemStruct;
170 class EnumItemDiscriminant;
171 class Enum;
172 class Union;
173 class ConstantItem;
174 class StaticItem;
175 struct TraitFunctionDecl;
176 class TraitItemFunc;
177 class TraitItemConst;
178 class TraitItemType;
179 class Trait;
180 class ImplBlock;
181 class ExternalItem;
182 class ExternalStaticItem;
183 struct NamedFunctionParam;
184 class ExternalFunctionItem;
185 class ExternBlock;
187 // rust-pattern.h
188 class LiteralPattern;
189 class IdentifierPattern;
190 class WildcardPattern;
191 class RangePatternBound;
192 class RangePatternBoundLiteral;
193 class RangePatternBoundPath;
194 class RangePatternBoundQualPath;
195 class RangePattern;
196 class ReferencePattern;
197 struct StructPatternEtc;
198 class StructPatternField;
199 class StructPatternFieldTuplePat;
200 class StructPatternFieldIdentPat;
201 class StructPatternFieldIdent;
202 class StructPattern;
203 class TupleStructItems;
204 class TupleStructItemsNoRange;
205 class TupleStructItemsRange;
206 class TupleStructPattern;
207 class TuplePatternItems;
208 class TuplePatternItemsMultiple;
209 class TuplePatternItemsRanged;
210 class TuplePattern;
211 class GroupedPattern;
212 class SlicePattern;
214 // rust-type.h
215 class TraitBound;
216 class ImplTraitType;
217 class TraitObjectType;
218 class ParenthesisedType;
219 class ImplTraitTypeOneBound;
220 class TupleType;
221 class NeverType;
222 class RawPointerType;
223 class ReferenceType;
224 class ArrayType;
225 class SliceType;
226 class InferredType;
227 struct MaybeNamedParam;
228 class BareFunctionType;
229 } // namespace HIR
230 } // namespace Rust
232 #endif