Daily bump.
[official-gcc.git] / gcc / rust / ast / rust-ast-full-decls.h
blob26377b790d4b7dbc37224435320e2d561e38fd41
1 // Copyright (C) 2020-2025 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_AST_FULL_DECLS_H
20 #define RUST_AST_FULL_DECLS_H
22 // Forward declarations for all AST classes. Useful for not having to include
23 // all definitions.
25 namespace Rust {
26 namespace AST {
27 // rust-ast.h
28 class AttrInput;
29 class TokenTree;
30 class MacroMatch;
31 class Token;
32 struct Literal;
33 class DelimTokenTree;
34 class PathSegment;
35 class SimplePathSegment;
36 class SimplePath;
37 struct Attribute;
38 class MetaItemInner;
39 class AttrInputMetaItemContainer;
40 class MetaItem;
41 class Stmt;
42 class Item;
43 class Expr;
44 class ExprWithoutBlock;
45 class IdentifierExpr;
46 class Pattern;
47 class Type;
48 class TypeNoBounds;
49 class TypeParamBound;
50 class Lifetime;
51 class GenericParam;
52 class LifetimeParam;
53 class ConstGenericParam;
54 class TraitItem;
55 class AssociatedItem;
56 struct Crate;
57 class PathExpr;
59 // rust-path.h
60 class PathIdentSegment;
61 struct GenericArgsBinding;
62 struct GenericArgs;
63 class PathExprSegment;
64 class PathPattern;
65 class PathInExpression;
66 class TypePathSegment;
67 class TypePathSegmentGeneric;
68 struct TypePathFunction;
69 class TypePathSegmentFunction;
70 class TypePath;
71 struct QualifiedPathType;
72 class QualifiedPathInExpression;
73 class QualifiedPathInType;
75 // rust-expr.h
76 class ExprWithBlock;
77 class LiteralExpr;
78 class AttrInputLiteral;
79 class AttrInputMacro;
80 class MetaItemLitExpr;
81 class MetaItemPathLit;
82 class OperatorExpr;
83 class BorrowExpr;
84 class DereferenceExpr;
85 class ErrorPropagationExpr;
86 class NegationExpr;
87 class ArithmeticOrLogicalExpr;
88 class ComparisonExpr;
89 class LazyBooleanExpr;
90 class TypeCastExpr;
91 class AssignmentExpr;
92 class CompoundAssignmentExpr;
93 class GroupedExpr;
94 class ArrayElems;
95 class ArrayElemsValues;
96 class ArrayElemsCopied;
97 class ArrayExpr;
98 class ArrayIndexExpr;
99 class TupleExpr;
100 class TupleIndexExpr;
101 class StructExpr;
102 class StructExprStruct;
103 struct StructBase;
104 class StructExprField;
105 class StructExprFieldIdentifier;
106 class StructExprFieldWithVal;
107 class StructExprFieldIdentifierValue;
108 class StructExprFieldIndexValue;
109 class StructExprStructFields;
110 class StructExprStructBase;
111 class CallExpr;
112 class MethodCallExpr;
113 class FieldAccessExpr;
114 struct ClosureParam;
115 class ClosureExpr;
116 class ClosureExprInner;
117 class BlockExpr;
118 class ClosureExprInnerTyped;
119 class ContinueExpr;
120 class BreakExpr;
121 class RangeExpr;
122 class RangeFromToExpr;
123 class RangeFromExpr;
124 class RangeToExpr;
125 class RangeFullExpr;
126 class RangeFromToInclExpr;
127 class RangeToInclExpr;
128 class ReturnExpr;
129 class UnsafeBlockExpr;
130 class LoopLabel;
131 class BaseLoopExpr;
132 class LoopExpr;
133 class WhileLoopExpr;
134 class WhileLetLoopExpr;
135 class ForLoopExpr;
136 class IfExpr;
137 class IfExprConseqElse;
138 class IfLetExpr;
139 class IfLetExprConseqElse;
140 struct MatchArm;
141 // class MatchCase;
142 // class MatchCaseBlockExpr;
143 // class MatchCaseExpr;
144 struct MatchCase;
145 class MatchExpr;
146 class AwaitExpr;
147 class AsyncBlockExpr;
148 enum class InlineAsmOptions;
149 struct AnonConst;
150 struct InlineAsmRegOrRegClass;
151 struct InlineAsmOperand;
152 struct InlineAsmPlaceHolder;
153 struct InlineAsmTemplatePiece;
154 struct TupleClobber;
155 struct TupleTemplateStr;
156 class InlineAsm;
158 // rust-stmt.h
159 class EmptyStmt;
160 class LetStmt;
161 class ExprStmt;
163 // rust-item.h
164 class TypeParam;
165 class WhereClauseItem;
166 class LifetimeWhereClauseItem;
167 class TypeBoundWhereClauseItem;
168 class WhereClause;
169 class SelfParam;
170 class FunctionQualifiers;
171 class FunctionParam;
172 struct Visibility;
173 class VisItem;
174 class Module;
175 class ExternCrate;
176 class UseTree;
177 class UseTreeGlob;
178 class UseTreeList;
179 class UseTreeRebind;
180 class UseDeclaration;
181 class Function;
182 class TypeAlias;
183 class Struct;
184 class StructField;
185 class StructStruct;
186 class TupleField;
187 class TupleStruct;
188 class EnumItem;
189 class EnumItemTuple;
190 class EnumItemStruct;
191 class EnumItemDiscriminant;
192 class Enum;
193 class Union;
194 class ConstantItem;
195 class StaticItem;
196 class TraitItemConst;
197 class TraitItemType;
198 class Trait;
199 class Impl;
200 class InherentImpl;
201 class TraitImpl;
202 class ExternalItem;
203 class ExternalTypeItem;
204 class ExternalStaticItem;
205 class NamedFunctionParam;
206 class ExternBlock;
208 // rust-macro.h
209 class MacroMatchFragment;
210 class MacroMatchRepetition;
211 class MacroMatcher;
212 struct MacroTranscriber;
213 struct MacroRule;
214 class MacroRulesDefinition;
215 class MacroInvocation;
216 class MetaItemPath;
217 class MetaItemSeq;
218 class MetaWord;
219 class MetaNameValueStr;
220 class MetaListPaths;
221 class MetaListNameValueStr;
223 // rust-pattern.h
224 class LiteralPattern;
225 class IdentifierPattern;
226 class WildcardPattern;
227 class RestPattern;
228 class RangePatternBound;
229 class RangePatternBoundLiteral;
230 class RangePatternBoundPath;
231 class RangePatternBoundQualPath;
232 class RangePattern;
233 class ReferencePattern;
234 struct StructPatternEtc;
235 class StructPatternField;
236 class StructPatternFieldTuplePat;
237 class StructPatternFieldIdentPat;
238 class StructPatternFieldIdent;
239 class StructPatternElements;
240 class StructPattern;
241 class TupleStructItems;
242 class TupleStructItemsNoRange;
243 class TupleStructItemsRange;
244 class TupleStructPattern;
245 class TuplePatternItems;
246 class TuplePatternItemsMultiple;
247 class TuplePatternItemsRanged;
248 class TuplePattern;
249 class GroupedPattern;
250 class SlicePattern;
251 class AltPattern;
253 // rust-type.h
254 class TraitBound;
255 class ImplTraitType;
256 class TraitObjectType;
257 class ParenthesisedType;
258 class ImplTraitTypeOneBound;
259 class TraitObjectTypeOneBound;
260 class TupleType;
261 class NeverType;
262 class RawPointerType;
263 class ReferenceType;
264 class ArrayType;
265 class SliceType;
266 class InferredType;
267 struct MaybeNamedParam;
268 class BareFunctionType;
270 // rust-builtin-ast-nodes.h
271 class FormatArgs;
272 } // namespace AST
273 } // namespace Rust
275 #endif