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
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
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
29 class ExprWithoutBlock
;
44 class PathIdentSegment
;
45 struct GenericArgsBinding
;
47 class PathExprSegment
;
49 class PathInExpression
;
50 class TypePathSegment
;
51 class TypePathSegmentGeneric
;
52 struct TypePathFunction
;
53 class TypePathSegmentFunction
;
55 struct QualifiedPathType
;
56 class QualifiedPathInExpression
;
57 class QualifiedPathInType
;
62 class AttrInputLiteral
;
65 class DereferenceExpr
;
66 class ErrorPropagationExpr
;
68 class ArithmeticOrLogicalExpr
;
70 class LazyBooleanExpr
;
73 class CompoundAssignmentExpr
;
76 class ArrayElemsValues
;
77 class ArrayElemsCopied
;
83 class StructExprStruct
;
85 class StructExprField
;
86 class StructExprFieldIdentifier
;
87 class StructExprFieldWithVal
;
88 class StructExprFieldIdentifierValue
;
89 class StructExprFieldIndexValue
;
90 class StructExprStructFields
;
91 class StructExprStructBase
;
94 class FieldAccessExpr
;
97 class ClosureExprInner
;
99 class ClosureExprInnerTyped
;
103 class RangeFromToExpr
;
107 class RangeFromToInclExpr
;
108 class RangeToInclExpr
;
110 class UnsafeBlockExpr
;
115 class WhileLetLoopExpr
;
118 class IfExprConseqElse
;
119 class IfExprConseqIf
;
121 class IfExprConseqIfLet
;
122 class IfLetExprConseqElse
;
123 class IfLetExprConseqIf
;
124 class IfLetExprConseqIfLet
;
127 // class MatchCaseBlockExpr;
128 // class MatchCaseExpr;
132 class AsyncBlockExpr
;
138 class ExprStmtWithoutBlock
;
139 class ExprStmtWithBlock
;
143 class ConstGenericParam
;
144 class WhereClauseItem
;
145 class LifetimeWhereClauseItem
;
146 class TypeBoundWhereClauseItem
;
149 struct FunctionQualifiers
;
150 struct FunctionParam
;
159 class UseDeclaration
;
169 class EnumItemStruct
;
170 class EnumItemDiscriminant
;
175 struct TraitFunctionDecl
;
177 class TraitItemConst
;
182 class ExternalStaticItem
;
183 struct NamedFunctionParam
;
184 class ExternalFunctionItem
;
188 class LiteralPattern
;
189 class IdentifierPattern
;
190 class WildcardPattern
;
191 class RangePatternBound
;
192 class RangePatternBoundLiteral
;
193 class RangePatternBoundPath
;
194 class RangePatternBoundQualPath
;
196 class ReferencePattern
;
197 struct StructPatternEtc
;
198 class StructPatternField
;
199 class StructPatternFieldTuplePat
;
200 class StructPatternFieldIdentPat
;
201 class StructPatternFieldIdent
;
203 class TupleStructItems
;
204 class TupleStructItemsNoRange
;
205 class TupleStructItemsRange
;
206 class TupleStructPattern
;
207 class TuplePatternItems
;
208 class TuplePatternItemsMultiple
;
209 class TuplePatternItemsRanged
;
211 class GroupedPattern
;
217 class TraitObjectType
;
218 class ParenthesisedType
;
219 class ImplTraitTypeOneBound
;
222 class RawPointerType
;
227 struct MaybeNamedParam
;
228 class BareFunctionType
;