(root)/
gcc-13.2.0/
gcc/
rust/
ast/
rust-ast-full-decls.h
       1  // Copyright (C) 2020-2023 Free Software Foundation, Inc.
       2  
       3  // This file is part of GCC.
       4  
       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.
       9  
      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.
      14  
      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/>.
      18  
      19  #ifndef RUST_AST_FULL_DECLS_H
      20  #define RUST_AST_FULL_DECLS_H
      21  
      22  // Forward declarations for all AST classes. Useful for not having to include
      23  // all definitions.
      24  
      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 InherentImplItem;
      56  class TraitImplItem;
      57  struct Crate;
      58  class PathExpr;
      59  
      60  // rust-path.h
      61  class PathIdentSegment;
      62  struct GenericArgsBinding;
      63  struct GenericArgs;
      64  class PathExprSegment;
      65  class PathPattern;
      66  class PathInExpression;
      67  class TypePathSegment;
      68  class TypePathSegmentGeneric;
      69  struct TypePathFunction;
      70  class TypePathSegmentFunction;
      71  class TypePath;
      72  struct QualifiedPathType;
      73  class QualifiedPathInExpression;
      74  class QualifiedPathInType;
      75  
      76  // rust-expr.h
      77  class ExprWithBlock;
      78  class LiteralExpr;
      79  class AttrInputLiteral;
      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 IfExprConseqIf;
     139  class IfLetExpr;
     140  class IfExprConseqIfLet;
     141  class IfLetExprConseqElse;
     142  class IfLetExprConseqIf;
     143  class IfLetExprConseqIfLet;
     144  struct MatchArm;
     145  // class MatchCase;
     146  // class MatchCaseBlockExpr;
     147  // class MatchCaseExpr;
     148  struct MatchCase;
     149  class MatchExpr;
     150  class AwaitExpr;
     151  class AsyncBlockExpr;
     152  class InlineAsm;
     153  
     154  // rust-stmt.h
     155  class EmptyStmt;
     156  class LetStmt;
     157  class ExprStmt;
     158  class ExprStmtWithoutBlock;
     159  class ExprStmtWithBlock;
     160  
     161  // rust-item.h
     162  class TypeParam;
     163  class WhereClauseItem;
     164  class LifetimeWhereClauseItem;
     165  class TypeBoundWhereClauseItem;
     166  struct WhereClause;
     167  struct SelfParam;
     168  struct FunctionQualifiers;
     169  struct FunctionParam;
     170  struct Visibility;
     171  class Method;
     172  class VisItem;
     173  class Module;
     174  class ExternCrate;
     175  class UseTree;
     176  class UseTreeGlob;
     177  class UseTreeList;
     178  class UseTreeRebind;
     179  class UseDeclaration;
     180  class Function;
     181  class TypeAlias;
     182  class Struct;
     183  struct StructField;
     184  class StructStruct;
     185  struct TupleField;
     186  class TupleStruct;
     187  class EnumItem;
     188  class EnumItemTuple;
     189  class EnumItemStruct;
     190  class EnumItemDiscriminant;
     191  class Enum;
     192  class Union;
     193  class ConstantItem;
     194  class StaticItem;
     195  struct TraitFunctionDecl;
     196  class TraitItemFunc;
     197  struct TraitMethodDecl;
     198  class TraitItemMethod;
     199  class TraitItemConst;
     200  class TraitItemType;
     201  class Trait;
     202  class Impl;
     203  class InherentImpl;
     204  class TraitImpl;
     205  class ExternalItem;
     206  class ExternalStaticItem;
     207  struct NamedFunctionParam;
     208  class ExternalFunctionItem;
     209  class ExternBlock;
     210  
     211  // rust-macro.h
     212  class MacroMatchFragment;
     213  class MacroMatchRepetition;
     214  class MacroMatcher;
     215  struct MacroTranscriber;
     216  struct MacroRule;
     217  class MacroRulesDefinition;
     218  class MacroInvocation;
     219  class MetaItemPath;
     220  class MetaItemSeq;
     221  class MetaWord;
     222  class MetaNameValueStr;
     223  class MetaListPaths;
     224  class MetaListNameValueStr;
     225  
     226  // rust-pattern.h
     227  class LiteralPattern;
     228  class IdentifierPattern;
     229  class WildcardPattern;
     230  class RangePatternBound;
     231  class RangePatternBoundLiteral;
     232  class RangePatternBoundPath;
     233  class RangePatternBoundQualPath;
     234  class RangePattern;
     235  class ReferencePattern;
     236  struct StructPatternEtc;
     237  class StructPatternField;
     238  class StructPatternFieldTuplePat;
     239  class StructPatternFieldIdentPat;
     240  class StructPatternFieldIdent;
     241  struct StructPatternElements;
     242  class StructPattern;
     243  class TupleStructItems;
     244  class TupleStructItemsNoRange;
     245  class TupleStructItemsRange;
     246  class TupleStructPattern;
     247  class TuplePatternItems;
     248  class TuplePatternItemsMultiple;
     249  class TuplePatternItemsRanged;
     250  class TuplePattern;
     251  class GroupedPattern;
     252  class SlicePattern;
     253  class AltPattern;
     254  
     255  // rust-type.h
     256  class TraitBound;
     257  class ImplTraitType;
     258  class TraitObjectType;
     259  class ParenthesisedType;
     260  class ImplTraitTypeOneBound;
     261  class TraitObjectTypeOneBound;
     262  class TupleType;
     263  class NeverType;
     264  class RawPointerType;
     265  class ReferenceType;
     266  class ArrayType;
     267  class SliceType;
     268  class InferredType;
     269  struct MaybeNamedParam;
     270  class BareFunctionType;
     271  } // namespace AST
     272  } // namespace Rust
     273  
     274  #endif