]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/rust/ast/rust-ast-visitor.h
Update copyright years.
[thirdparty/gcc.git] / gcc / rust / ast / rust-ast-visitor.h
CommitLineData
83ffe9cd 1// Copyright (C) 2020-2023 Free Software Foundation, Inc.
5b981e9c
JP
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_VISITOR_H
20#define RUST_AST_VISITOR_H
21// Visitor base for AST
22
23// full include not required - only forward decls
24#include "rust-ast-full-decls.h"
25
26namespace Rust {
27namespace AST {
28/* Pure abstract class that provides an interface for accessing different
29 * classes of the AST. */
30class ASTVisitor
31{
32public:
33 // only concrete class overloads are required
34
35 // rust-ast.h
36 // virtual void visit(AttrInput& attr_input) = 0;
37 // virtual void visit(TokenTree& token_tree) = 0;
38 // virtual void visit(MacroMatch& macro_match) = 0;
39 virtual void visit (Token &tok) = 0;
40 virtual void visit (DelimTokenTree &delim_tok_tree) = 0;
41 virtual void visit (AttrInputMetaItemContainer &input) = 0;
42 // virtual void visit(MetaItem& meta_item) = 0;
43 // virtual void visit(Stmt& stmt) = 0;
44 // virtual void visit(Expr& expr) = 0;
45 virtual void visit (IdentifierExpr &ident_expr) = 0;
46 // virtual void visit(Pattern& pattern) = 0;
47 // virtual void visit(Type& type) = 0;
48 // virtual void visit(TypeParamBound& type_param_bound) = 0;
49 virtual void visit (Lifetime &lifetime) = 0;
50 // virtual void visit(GenericParam& generic_param) = 0;
51 virtual void visit (LifetimeParam &lifetime_param) = 0;
52 virtual void visit (ConstGenericParam &const_param) = 0;
53 // virtual void visit(TraitItem& trait_item) = 0;
54 // virtual void visit(InherentImplItem& inherent_impl_item) = 0;
55 // virtual void visit(TraitImplItem& trait_impl_item) = 0;
56
57 // rust-path.h
58 virtual void visit (PathInExpression &path) = 0;
59 virtual void visit (TypePathSegment &segment) = 0;
60 virtual void visit (TypePathSegmentGeneric &segment) = 0;
61 virtual void visit (TypePathSegmentFunction &segment) = 0;
62 virtual void visit (TypePath &path) = 0;
63 virtual void visit (QualifiedPathInExpression &path) = 0;
64 virtual void visit (QualifiedPathInType &path) = 0;
65
66 // rust-expr.h
67 virtual void visit (LiteralExpr &expr) = 0;
68 virtual void visit (AttrInputLiteral &attr_input) = 0;
69 virtual void visit (MetaItemLitExpr &meta_item) = 0;
70 virtual void visit (MetaItemPathLit &meta_item) = 0;
71 virtual void visit (BorrowExpr &expr) = 0;
72 virtual void visit (DereferenceExpr &expr) = 0;
73 virtual void visit (ErrorPropagationExpr &expr) = 0;
74 virtual void visit (NegationExpr &expr) = 0;
75 virtual void visit (ArithmeticOrLogicalExpr &expr) = 0;
76 virtual void visit (ComparisonExpr &expr) = 0;
77 virtual void visit (LazyBooleanExpr &expr) = 0;
78 virtual void visit (TypeCastExpr &expr) = 0;
79 virtual void visit (AssignmentExpr &expr) = 0;
80 virtual void visit (CompoundAssignmentExpr &expr) = 0;
81 virtual void visit (GroupedExpr &expr) = 0;
82 // virtual void visit(ArrayElems& elems) = 0;
83 virtual void visit (ArrayElemsValues &elems) = 0;
84 virtual void visit (ArrayElemsCopied &elems) = 0;
85 virtual void visit (ArrayExpr &expr) = 0;
86 virtual void visit (ArrayIndexExpr &expr) = 0;
87 virtual void visit (TupleExpr &expr) = 0;
88 virtual void visit (TupleIndexExpr &expr) = 0;
89 virtual void visit (StructExprStruct &expr) = 0;
90 // virtual void visit(StructExprField& field) = 0;
91 virtual void visit (StructExprFieldIdentifier &field) = 0;
92 virtual void visit (StructExprFieldIdentifierValue &field) = 0;
93 virtual void visit (StructExprFieldIndexValue &field) = 0;
94 virtual void visit (StructExprStructFields &expr) = 0;
95 virtual void visit (StructExprStructBase &expr) = 0;
96 virtual void visit (CallExpr &expr) = 0;
97 virtual void visit (MethodCallExpr &expr) = 0;
98 virtual void visit (FieldAccessExpr &expr) = 0;
99 virtual void visit (ClosureExprInner &expr) = 0;
100 virtual void visit (BlockExpr &expr) = 0;
101 virtual void visit (ClosureExprInnerTyped &expr) = 0;
102 virtual void visit (ContinueExpr &expr) = 0;
103 virtual void visit (BreakExpr &expr) = 0;
104 virtual void visit (RangeFromToExpr &expr) = 0;
105 virtual void visit (RangeFromExpr &expr) = 0;
106 virtual void visit (RangeToExpr &expr) = 0;
107 virtual void visit (RangeFullExpr &expr) = 0;
108 virtual void visit (RangeFromToInclExpr &expr) = 0;
109 virtual void visit (RangeToInclExpr &expr) = 0;
110 virtual void visit (ReturnExpr &expr) = 0;
111 virtual void visit (UnsafeBlockExpr &expr) = 0;
112 virtual void visit (LoopExpr &expr) = 0;
113 virtual void visit (WhileLoopExpr &expr) = 0;
114 virtual void visit (WhileLetLoopExpr &expr) = 0;
115 virtual void visit (ForLoopExpr &expr) = 0;
116 virtual void visit (IfExpr &expr) = 0;
117 virtual void visit (IfExprConseqElse &expr) = 0;
118 virtual void visit (IfExprConseqIf &expr) = 0;
119 virtual void visit (IfExprConseqIfLet &expr) = 0;
120 virtual void visit (IfLetExpr &expr) = 0;
121 virtual void visit (IfLetExprConseqElse &expr) = 0;
122 virtual void visit (IfLetExprConseqIf &expr) = 0;
123 virtual void visit (IfLetExprConseqIfLet &expr) = 0;
124 // virtual void visit(MatchCase& match_case) = 0;
125 // virtual void visit (MatchCaseBlockExpr &match_case) = 0;
126 // virtual void visit (MatchCaseExpr &match_case) = 0;
127 virtual void visit (MatchExpr &expr) = 0;
128 virtual void visit (AwaitExpr &expr) = 0;
129 virtual void visit (AsyncBlockExpr &expr) = 0;
130
131 // rust-item.h
132 virtual void visit (TypeParam &param) = 0;
133 // virtual void visit(WhereClauseItem& item) = 0;
134 virtual void visit (LifetimeWhereClauseItem &item) = 0;
135 virtual void visit (TypeBoundWhereClauseItem &item) = 0;
136 virtual void visit (Method &method) = 0;
137 virtual void visit (Module &module) = 0;
138 virtual void visit (ExternCrate &crate) = 0;
139 // virtual void visit(UseTree& use_tree) = 0;
140 virtual void visit (UseTreeGlob &use_tree) = 0;
141 virtual void visit (UseTreeList &use_tree) = 0;
142 virtual void visit (UseTreeRebind &use_tree) = 0;
143 virtual void visit (UseDeclaration &use_decl) = 0;
144 virtual void visit (Function &function) = 0;
145 virtual void visit (TypeAlias &type_alias) = 0;
146 virtual void visit (StructStruct &struct_item) = 0;
147 virtual void visit (TupleStruct &tuple_struct) = 0;
148 virtual void visit (EnumItem &item) = 0;
149 virtual void visit (EnumItemTuple &item) = 0;
150 virtual void visit (EnumItemStruct &item) = 0;
151 virtual void visit (EnumItemDiscriminant &item) = 0;
152 virtual void visit (Enum &enum_item) = 0;
153 virtual void visit (Union &union_item) = 0;
154 virtual void visit (ConstantItem &const_item) = 0;
155 virtual void visit (StaticItem &static_item) = 0;
156 virtual void visit (TraitItemFunc &item) = 0;
157 virtual void visit (TraitItemMethod &item) = 0;
158 virtual void visit (TraitItemConst &item) = 0;
159 virtual void visit (TraitItemType &item) = 0;
160 virtual void visit (Trait &trait) = 0;
161 virtual void visit (InherentImpl &impl) = 0;
162 virtual void visit (TraitImpl &impl) = 0;
163 // virtual void visit(ExternalItem& item) = 0;
164 virtual void visit (ExternalStaticItem &item) = 0;
165 virtual void visit (ExternalFunctionItem &item) = 0;
166 virtual void visit (ExternBlock &block) = 0;
167
168 // rust-macro.h
169 virtual void visit (MacroMatchFragment &match) = 0;
170 virtual void visit (MacroMatchRepetition &match) = 0;
171 virtual void visit (MacroMatcher &matcher) = 0;
172 virtual void visit (MacroRulesDefinition &rules_def) = 0;
173 virtual void visit (MacroInvocation &macro_invoc) = 0;
174 virtual void visit (MetaItemPath &meta_item) = 0;
175 virtual void visit (MetaItemSeq &meta_item) = 0;
176 virtual void visit (MetaWord &meta_item) = 0;
177 virtual void visit (MetaNameValueStr &meta_item) = 0;
178 virtual void visit (MetaListPaths &meta_item) = 0;
179 virtual void visit (MetaListNameValueStr &meta_item) = 0;
180
181 // rust-pattern.h
182 virtual void visit (LiteralPattern &pattern) = 0;
183 virtual void visit (IdentifierPattern &pattern) = 0;
184 virtual void visit (WildcardPattern &pattern) = 0;
185 // virtual void visit(RangePatternBound& bound) = 0;
186 virtual void visit (RangePatternBoundLiteral &bound) = 0;
187 virtual void visit (RangePatternBoundPath &bound) = 0;
188 virtual void visit (RangePatternBoundQualPath &bound) = 0;
189 virtual void visit (RangePattern &pattern) = 0;
190 virtual void visit (ReferencePattern &pattern) = 0;
191 // virtual void visit(StructPatternField& field) = 0;
192 virtual void visit (StructPatternFieldTuplePat &field) = 0;
193 virtual void visit (StructPatternFieldIdentPat &field) = 0;
194 virtual void visit (StructPatternFieldIdent &field) = 0;
195 virtual void visit (StructPattern &pattern) = 0;
196 // virtual void visit(TupleStructItems& tuple_items) = 0;
197 virtual void visit (TupleStructItemsNoRange &tuple_items) = 0;
198 virtual void visit (TupleStructItemsRange &tuple_items) = 0;
199 virtual void visit (TupleStructPattern &pattern) = 0;
200 // virtual void visit(TuplePatternItems& tuple_items) = 0;
201 virtual void visit (TuplePatternItemsMultiple &tuple_items) = 0;
202 virtual void visit (TuplePatternItemsRanged &tuple_items) = 0;
203 virtual void visit (TuplePattern &pattern) = 0;
204 virtual void visit (GroupedPattern &pattern) = 0;
205 virtual void visit (SlicePattern &pattern) = 0;
206
207 // rust-stmt.h
208 virtual void visit (EmptyStmt &stmt) = 0;
209 virtual void visit (LetStmt &stmt) = 0;
210 virtual void visit (ExprStmtWithoutBlock &stmt) = 0;
211 virtual void visit (ExprStmtWithBlock &stmt) = 0;
212
213 // rust-type.h
214 virtual void visit (TraitBound &bound) = 0;
215 virtual void visit (ImplTraitType &type) = 0;
216 virtual void visit (TraitObjectType &type) = 0;
217 virtual void visit (ParenthesisedType &type) = 0;
218 virtual void visit (ImplTraitTypeOneBound &type) = 0;
219 virtual void visit (TraitObjectTypeOneBound &type) = 0;
220 virtual void visit (TupleType &type) = 0;
221 virtual void visit (NeverType &type) = 0;
222 virtual void visit (RawPointerType &type) = 0;
223 virtual void visit (ReferenceType &type) = 0;
224 virtual void visit (ArrayType &type) = 0;
225 virtual void visit (SliceType &type) = 0;
226 virtual void visit (InferredType &type) = 0;
227 virtual void visit (BareFunctionType &type) = 0;
228
229 // TODO: rust-cond-compilation.h visiting? not currently used
230};
231} // namespace AST
232} // namespace Rust
233
234#endif