Branch data Line data Source code
1 : : // Copyright (C) 2020-2024 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_HIR_VISITOR_H
20 : : #define RUST_HIR_VISITOR_H
21 : :
22 : : #include "rust-hir-full-decls.h"
23 : :
24 : : namespace Rust {
25 : : namespace HIR {
26 : :
27 : 16566 : class HIRFullVisitor
28 : : {
29 : : public:
30 : : virtual void visit (Lifetime &lifetime) = 0;
31 : : virtual void visit (LifetimeParam &lifetime_param) = 0;
32 : : virtual void visit (PathInExpression &path) = 0;
33 : : virtual void visit (TypePathSegment &segment) = 0;
34 : : virtual void visit (TypePathSegmentGeneric &segment) = 0;
35 : : virtual void visit (TypePathSegmentFunction &segment) = 0;
36 : : virtual void visit (TypePath &path) = 0;
37 : : virtual void visit (QualifiedPathInExpression &path) = 0;
38 : : virtual void visit (QualifiedPathInType &path) = 0;
39 : : virtual void visit (LiteralExpr &expr) = 0;
40 : : virtual void visit (BorrowExpr &expr) = 0;
41 : : virtual void visit (DereferenceExpr &expr) = 0;
42 : : virtual void visit (ErrorPropagationExpr &expr) = 0;
43 : : virtual void visit (NegationExpr &expr) = 0;
44 : : virtual void visit (ArithmeticOrLogicalExpr &expr) = 0;
45 : : virtual void visit (ComparisonExpr &expr) = 0;
46 : : virtual void visit (LazyBooleanExpr &expr) = 0;
47 : : virtual void visit (TypeCastExpr &expr) = 0;
48 : : virtual void visit (AssignmentExpr &expr) = 0;
49 : : virtual void visit (CompoundAssignmentExpr &expr) = 0;
50 : : virtual void visit (GroupedExpr &expr) = 0;
51 : : virtual void visit (ArrayElemsValues &elems) = 0;
52 : : virtual void visit (ArrayElemsCopied &elems) = 0;
53 : : virtual void visit (ArrayExpr &expr) = 0;
54 : : virtual void visit (ArrayIndexExpr &expr) = 0;
55 : : virtual void visit (TupleExpr &expr) = 0;
56 : : virtual void visit (TupleIndexExpr &expr) = 0;
57 : : virtual void visit (StructExprStruct &expr) = 0;
58 : : virtual void visit (StructExprFieldIdentifier &field) = 0;
59 : : virtual void visit (StructExprFieldIdentifierValue &field) = 0;
60 : : virtual void visit (StructExprFieldIndexValue &field) = 0;
61 : : virtual void visit (StructExprStructFields &expr) = 0;
62 : : virtual void visit (StructExprStructBase &expr) = 0;
63 : : virtual void visit (CallExpr &expr) = 0;
64 : : virtual void visit (MethodCallExpr &expr) = 0;
65 : : virtual void visit (FieldAccessExpr &expr) = 0;
66 : : virtual void visit (BlockExpr &expr) = 0;
67 : : virtual void visit (ClosureExpr &expr) = 0;
68 : : virtual void visit (ContinueExpr &expr) = 0;
69 : : virtual void visit (BreakExpr &expr) = 0;
70 : : virtual void visit (RangeFromToExpr &expr) = 0;
71 : : virtual void visit (RangeFromExpr &expr) = 0;
72 : : virtual void visit (RangeToExpr &expr) = 0;
73 : : virtual void visit (RangeFullExpr &expr) = 0;
74 : : virtual void visit (RangeFromToInclExpr &expr) = 0;
75 : : virtual void visit (RangeToInclExpr &expr) = 0;
76 : : virtual void visit (ReturnExpr &expr) = 0;
77 : : virtual void visit (UnsafeBlockExpr &expr) = 0;
78 : : virtual void visit (LoopExpr &expr) = 0;
79 : : virtual void visit (WhileLoopExpr &expr) = 0;
80 : : virtual void visit (WhileLetLoopExpr &expr) = 0;
81 : : virtual void visit (IfExpr &expr) = 0;
82 : : virtual void visit (IfExprConseqElse &expr) = 0;
83 : : virtual void visit (IfLetExpr &expr) = 0;
84 : : virtual void visit (IfLetExprConseqElse &expr) = 0;
85 : : virtual void visit (MatchExpr &expr) = 0;
86 : : virtual void visit (AwaitExpr &expr) = 0;
87 : : virtual void visit (AsyncBlockExpr &expr) = 0;
88 : : virtual void visit (TypeParam ¶m) = 0;
89 : : virtual void visit (ConstGenericParam ¶m) = 0;
90 : : virtual void visit (LifetimeWhereClauseItem &item) = 0;
91 : : virtual void visit (TypeBoundWhereClauseItem &item) = 0;
92 : : virtual void visit (Module &module) = 0;
93 : : virtual void visit (ExternCrate &crate) = 0;
94 : : virtual void visit (UseTreeGlob &use_tree) = 0;
95 : : virtual void visit (UseTreeList &use_tree) = 0;
96 : : virtual void visit (UseTreeRebind &use_tree) = 0;
97 : : virtual void visit (UseDeclaration &use_decl) = 0;
98 : : virtual void visit (Function &function) = 0;
99 : : virtual void visit (TypeAlias &type_alias) = 0;
100 : : virtual void visit (StructStruct &struct_item) = 0;
101 : : virtual void visit (TupleStruct &tuple_struct) = 0;
102 : : virtual void visit (EnumItem &item) = 0;
103 : : virtual void visit (EnumItemTuple &item) = 0;
104 : : virtual void visit (EnumItemStruct &item) = 0;
105 : : virtual void visit (EnumItemDiscriminant &item) = 0;
106 : : virtual void visit (Enum &enum_item) = 0;
107 : : virtual void visit (Union &union_item) = 0;
108 : : virtual void visit (ConstantItem &const_item) = 0;
109 : : virtual void visit (StaticItem &static_item) = 0;
110 : : virtual void visit (TraitItemFunc &item) = 0;
111 : : virtual void visit (TraitItemConst &item) = 0;
112 : : virtual void visit (TraitItemType &item) = 0;
113 : : virtual void visit (Trait &trait) = 0;
114 : : virtual void visit (ImplBlock &impl) = 0;
115 : : virtual void visit (ExternalStaticItem &item) = 0;
116 : : virtual void visit (ExternalFunctionItem &item) = 0;
117 : : virtual void visit (ExternalTypeItem &item) = 0;
118 : : virtual void visit (ExternBlock &block) = 0;
119 : : virtual void visit (LiteralPattern &pattern) = 0;
120 : : virtual void visit (IdentifierPattern &pattern) = 0;
121 : : virtual void visit (WildcardPattern &pattern) = 0;
122 : : virtual void visit (RangePatternBoundLiteral &bound) = 0;
123 : : virtual void visit (RangePatternBoundPath &bound) = 0;
124 : : virtual void visit (RangePatternBoundQualPath &bound) = 0;
125 : : virtual void visit (RangePattern &pattern) = 0;
126 : : virtual void visit (ReferencePattern &pattern) = 0;
127 : : virtual void visit (StructPatternFieldTuplePat &field) = 0;
128 : : virtual void visit (StructPatternFieldIdentPat &field) = 0;
129 : : virtual void visit (StructPatternFieldIdent &field) = 0;
130 : : virtual void visit (StructPattern &pattern) = 0;
131 : : virtual void visit (TupleStructItemsNoRange &tuple_items) = 0;
132 : : virtual void visit (TupleStructItemsRange &tuple_items) = 0;
133 : : virtual void visit (TupleStructPattern &pattern) = 0;
134 : : virtual void visit (TuplePatternItemsMultiple &tuple_items) = 0;
135 : : virtual void visit (TuplePatternItemsRanged &tuple_items) = 0;
136 : : virtual void visit (TuplePattern &pattern) = 0;
137 : : virtual void visit (SlicePattern &pattern) = 0;
138 : : virtual void visit (AltPattern &pattern) = 0;
139 : : virtual void visit (EmptyStmt &stmt) = 0;
140 : : virtual void visit (LetStmt &stmt) = 0;
141 : : virtual void visit (ExprStmt &stmt) = 0;
142 : : virtual void visit (TraitBound &bound) = 0;
143 : : virtual void visit (ImplTraitType &type) = 0;
144 : : virtual void visit (TraitObjectType &type) = 0;
145 : : virtual void visit (ParenthesisedType &type) = 0;
146 : : virtual void visit (ImplTraitTypeOneBound &type) = 0;
147 : : virtual void visit (TupleType &type) = 0;
148 : : virtual void visit (NeverType &type) = 0;
149 : : virtual void visit (RawPointerType &type) = 0;
150 : : virtual void visit (ReferenceType &type) = 0;
151 : : virtual void visit (ArrayType &type) = 0;
152 : : virtual void visit (SliceType &type) = 0;
153 : : virtual void visit (InferredType &type) = 0;
154 : : virtual void visit (BareFunctionType &type) = 0;
155 : : };
156 : :
157 : 9870 : class HIRFullVisitorBase : public HIRFullVisitor
158 : : {
159 : : public:
160 : 3290 : virtual ~HIRFullVisitorBase () {}
161 : :
162 : 0 : virtual void visit (Lifetime &) override {}
163 : 0 : virtual void visit (LifetimeParam &) override {}
164 : 0 : virtual void visit (PathInExpression &) override {}
165 : 0 : virtual void visit (TypePathSegment &) override {}
166 : 0 : virtual void visit (TypePathSegmentGeneric &) override {}
167 : 0 : virtual void visit (TypePathSegmentFunction &) override {}
168 : 0 : virtual void visit (TypePath &) override {}
169 : 61 : virtual void visit (QualifiedPathInExpression &) override {}
170 : 0 : virtual void visit (QualifiedPathInType &) override {}
171 : :
172 : 15133 : virtual void visit (LiteralExpr &) override {}
173 : 0 : virtual void visit (BorrowExpr &) override {}
174 : 0 : virtual void visit (DereferenceExpr &) override {}
175 : 0 : virtual void visit (ErrorPropagationExpr &) override {}
176 : 0 : virtual void visit (NegationExpr &) override {}
177 : 0 : virtual void visit (ArithmeticOrLogicalExpr &) override {}
178 : 0 : virtual void visit (ComparisonExpr &) override {}
179 : 0 : virtual void visit (LazyBooleanExpr &) override {}
180 : 0 : virtual void visit (TypeCastExpr &) override {}
181 : 0 : virtual void visit (AssignmentExpr &) override {}
182 : 0 : virtual void visit (CompoundAssignmentExpr &) override {}
183 : 0 : virtual void visit (GroupedExpr &) override {}
184 : :
185 : 0 : virtual void visit (ArrayElemsValues &) override {}
186 : 84 : virtual void visit (ArrayElemsCopied &) override {}
187 : 0 : virtual void visit (ArrayExpr &) override {}
188 : 0 : virtual void visit (ArrayIndexExpr &) override {}
189 : 0 : virtual void visit (TupleExpr &) override {}
190 : 0 : virtual void visit (TupleIndexExpr &) override {}
191 : 0 : virtual void visit (StructExprStruct &) override {}
192 : :
193 : 112 : virtual void visit (StructExprFieldIdentifier &) override {}
194 : 0 : virtual void visit (StructExprFieldIdentifierValue &) override {}
195 : :
196 : 42 : virtual void visit (StructExprFieldIndexValue &) override {}
197 : 0 : virtual void visit (StructExprStructFields &) override {}
198 : 0 : virtual void visit (StructExprStructBase &) override {}
199 : :
200 : 0 : virtual void visit (CallExpr &) override {}
201 : 0 : virtual void visit (MethodCallExpr &) override {}
202 : 0 : virtual void visit (FieldAccessExpr &) override {}
203 : 0 : virtual void visit (ClosureExpr &) override {}
204 : 0 : virtual void visit (BlockExpr &) override {}
205 : 7 : virtual void visit (ContinueExpr &) override {}
206 : 0 : virtual void visit (BreakExpr &) override {}
207 : 43 : virtual void visit (RangeFromToExpr &) override {}
208 : 0 : virtual void visit (RangeFromExpr &) override {}
209 : 0 : virtual void visit (RangeToExpr &) override {}
210 : 0 : virtual void visit (RangeFullExpr &) override {}
211 : 0 : virtual void visit (RangeFromToInclExpr &) override {}
212 : 0 : virtual void visit (RangeToInclExpr &) override {}
213 : 0 : virtual void visit (ReturnExpr &) override {}
214 : 0 : virtual void visit (UnsafeBlockExpr &) override {}
215 : 0 : virtual void visit (LoopExpr &) override {}
216 : 0 : virtual void visit (WhileLoopExpr &) override {}
217 : 0 : virtual void visit (WhileLetLoopExpr &) override {}
218 : 0 : virtual void visit (IfExpr &) override {}
219 : 0 : virtual void visit (IfExprConseqElse &) override {}
220 : 0 : virtual void visit (IfLetExpr &) override {}
221 : 1 : virtual void visit (IfLetExprConseqElse &) override {}
222 : :
223 : 0 : virtual void visit (MatchExpr &) override {}
224 : 0 : virtual void visit (AwaitExpr &) override {}
225 : 0 : virtual void visit (AsyncBlockExpr &) override {}
226 : :
227 : 0 : virtual void visit (TypeParam &) override {}
228 : 0 : virtual void visit (ConstGenericParam &) override {}
229 : :
230 : 0 : virtual void visit (LifetimeWhereClauseItem &) override {}
231 : 0 : virtual void visit (TypeBoundWhereClauseItem &) override {}
232 : 277 : virtual void visit (Module &) override {}
233 : 0 : virtual void visit (ExternCrate &) override {}
234 : :
235 : 0 : virtual void visit (UseTreeGlob &) override {}
236 : 0 : virtual void visit (UseTreeList &) override {}
237 : 0 : virtual void visit (UseTreeRebind &) override {}
238 : 0 : virtual void visit (UseDeclaration &) override {}
239 : 0 : virtual void visit (Function &) override {}
240 : 770 : virtual void visit (TypeAlias &) override {}
241 : 2284 : virtual void visit (StructStruct &) override {}
242 : 2311 : virtual void visit (TupleStruct &) override {}
243 : 0 : virtual void visit (EnumItem &) override {}
244 : 0 : virtual void visit (EnumItemTuple &) override {}
245 : 0 : virtual void visit (EnumItemStruct &) override {}
246 : 0 : virtual void visit (EnumItemDiscriminant &) override {}
247 : 486 : virtual void visit (Enum &) override {}
248 : 244 : virtual void visit (Union &) override {}
249 : 1550 : virtual void visit (ConstantItem &) override {}
250 : 118 : virtual void visit (StaticItem &) override {}
251 : 0 : virtual void visit (TraitItemFunc &) override {}
252 : 0 : virtual void visit (TraitItemConst &) override {}
253 : 0 : virtual void visit (TraitItemType &) override {}
254 : 3943 : virtual void visit (Trait &) override {}
255 : 2700 : virtual void visit (ImplBlock &) override {}
256 : :
257 : 0 : virtual void visit (ExternalStaticItem &) override {}
258 : 0 : virtual void visit (ExternalFunctionItem &) override {}
259 : 0 : virtual void visit (ExternalTypeItem &) override {}
260 : 1988 : virtual void visit (ExternBlock &) override {}
261 : :
262 : 0 : virtual void visit (LiteralPattern &) override {}
263 : 0 : virtual void visit (IdentifierPattern &) override {}
264 : 0 : virtual void visit (WildcardPattern &) override {}
265 : :
266 : 0 : virtual void visit (RangePatternBoundLiteral &) override {}
267 : 0 : virtual void visit (RangePatternBoundPath &) override {}
268 : 0 : virtual void visit (RangePatternBoundQualPath &) override {}
269 : 0 : virtual void visit (RangePattern &) override {}
270 : 0 : virtual void visit (ReferencePattern &) override {}
271 : :
272 : 0 : virtual void visit (StructPatternFieldTuplePat &) override {}
273 : 0 : virtual void visit (StructPatternFieldIdentPat &) override {}
274 : 0 : virtual void visit (StructPatternFieldIdent &) override {}
275 : 0 : virtual void visit (StructPattern &) override {}
276 : :
277 : 0 : virtual void visit (TupleStructItemsNoRange &) override {}
278 : 0 : virtual void visit (TupleStructItemsRange &) override {}
279 : 0 : virtual void visit (TupleStructPattern &) override {}
280 : :
281 : 0 : virtual void visit (TuplePatternItemsMultiple &) override {}
282 : 0 : virtual void visit (TuplePatternItemsRanged &) override {}
283 : 0 : virtual void visit (TuplePattern &) override {}
284 : 0 : virtual void visit (SlicePattern &) override {}
285 : 0 : virtual void visit (AltPattern &) override {}
286 : :
287 : 44 : virtual void visit (EmptyStmt &) override {}
288 : 0 : virtual void visit (LetStmt &) override {}
289 : 0 : virtual void visit (ExprStmt &) override {}
290 : :
291 : 0 : virtual void visit (TraitBound &) override {}
292 : 0 : virtual void visit (ImplTraitType &) override {}
293 : 0 : virtual void visit (TraitObjectType &) override {}
294 : 0 : virtual void visit (ParenthesisedType &) override {}
295 : 0 : virtual void visit (ImplTraitTypeOneBound &) override {}
296 : 0 : virtual void visit (TupleType &) override {}
297 : 0 : virtual void visit (NeverType &) override {}
298 : 0 : virtual void visit (RawPointerType &) override {}
299 : 0 : virtual void visit (ReferenceType &) override {}
300 : 0 : virtual void visit (ArrayType &) override {}
301 : 0 : virtual void visit (SliceType &) override {}
302 : 0 : virtual void visit (InferredType &) override {}
303 : 0 : virtual void visit (BareFunctionType &) override {}
304 : : };
305 : :
306 : 3165 : class HIRExternalItemVisitor
307 : : {
308 : : public:
309 : : virtual void visit (ExternalStaticItem &item) = 0;
310 : : virtual void visit (ExternalFunctionItem &item) = 0;
311 : : virtual void visit (ExternalTypeItem &item) = 0;
312 : : };
313 : :
314 : 1644 : class HIRTraitItemVisitor
315 : : {
316 : : public:
317 : : virtual void visit (TraitItemFunc &item) = 0;
318 : : virtual void visit (TraitItemConst &item) = 0;
319 : : virtual void visit (TraitItemType &item) = 0;
320 : : };
321 : :
322 : 36371 : class HIRVisItemVisitor
323 : : {
324 : : public:
325 : : virtual void visit (Module &module) = 0;
326 : : virtual void visit (ExternCrate &crate) = 0;
327 : : virtual void visit (UseDeclaration &use_decl) = 0;
328 : : virtual void visit (Function &function) = 0;
329 : : virtual void visit (TypeAlias &type_alias) = 0;
330 : : virtual void visit (StructStruct &struct_item) = 0;
331 : : virtual void visit (TupleStruct &tuple_struct) = 0;
332 : : virtual void visit (Enum &enum_item) = 0;
333 : : virtual void visit (Union &union_item) = 0;
334 : : virtual void visit (ConstantItem &const_item) = 0;
335 : : virtual void visit (StaticItem &static_item) = 0;
336 : : virtual void visit (Trait &trait) = 0;
337 : : virtual void visit (ImplBlock &impl) = 0;
338 : : virtual void visit (ExternBlock &block) = 0;
339 : : };
340 : :
341 : 9410 : class HIRImplVisitor
342 : : {
343 : : public:
344 : : virtual void visit (Function &function) = 0;
345 : : virtual void visit (ConstantItem &const_item) = 0;
346 : : virtual void visit (TypeAlias &type_alias) = 0;
347 : : };
348 : :
349 : 35360 : class HIRTypeVisitor
350 : : {
351 : : public:
352 : : virtual void visit (TypePathSegmentFunction &segment) = 0;
353 : : virtual void visit (TypePath &path) = 0;
354 : : virtual void visit (QualifiedPathInType &path) = 0;
355 : : virtual void visit (TraitBound &bound) = 0;
356 : : virtual void visit (ImplTraitType &type) = 0;
357 : : virtual void visit (TraitObjectType &type) = 0;
358 : : virtual void visit (ParenthesisedType &type) = 0;
359 : : virtual void visit (ImplTraitTypeOneBound &type) = 0;
360 : : virtual void visit (TupleType &type) = 0;
361 : : virtual void visit (NeverType &type) = 0;
362 : : virtual void visit (RawPointerType &type) = 0;
363 : : virtual void visit (ReferenceType &type) = 0;
364 : : virtual void visit (ArrayType &type) = 0;
365 : : virtual void visit (SliceType &type) = 0;
366 : : virtual void visit (InferredType &type) = 0;
367 : : virtual void visit (BareFunctionType &type) = 0;
368 : : };
369 : :
370 : 54382 : class HIRStmtVisitor
371 : : {
372 : : public:
373 : : virtual void visit (EnumItemTuple &) = 0;
374 : : virtual void visit (EnumItemStruct &) = 0;
375 : : virtual void visit (EnumItem &item) = 0;
376 : : virtual void visit (TupleStruct &tuple_struct) = 0;
377 : : virtual void visit (EnumItemDiscriminant &) = 0;
378 : : virtual void visit (TypePathSegmentFunction &segment) = 0;
379 : : virtual void visit (TypePath &path) = 0;
380 : : virtual void visit (QualifiedPathInType &path) = 0;
381 : : virtual void visit (Module &module) = 0;
382 : : virtual void visit (ExternCrate &crate) = 0;
383 : : virtual void visit (UseDeclaration &use_decl) = 0;
384 : : virtual void visit (Function &function) = 0;
385 : : virtual void visit (TypeAlias &type_alias) = 0;
386 : : virtual void visit (StructStruct &struct_item) = 0;
387 : : virtual void visit (Enum &enum_item) = 0;
388 : : virtual void visit (Union &union_item) = 0;
389 : : virtual void visit (ConstantItem &const_item) = 0;
390 : : virtual void visit (StaticItem &static_item) = 0;
391 : : virtual void visit (Trait &trait) = 0;
392 : : virtual void visit (ImplBlock &impl) = 0;
393 : : virtual void visit (ExternBlock &block) = 0;
394 : : virtual void visit (EmptyStmt &stmt) = 0;
395 : : virtual void visit (LetStmt &stmt) = 0;
396 : : virtual void visit (ExprStmt &stmt) = 0;
397 : : };
398 : :
399 : 82730 : class HIRExpressionVisitor
400 : : {
401 : : public:
402 : : // These are StructExprField
403 : : // Added because of CompileStructExprField
404 : : virtual void visit (StructExprFieldIdentifier &field) = 0;
405 : : virtual void visit (StructExprFieldIdentifierValue &field) = 0;
406 : : virtual void visit (StructExprFieldIndexValue &field) = 0;
407 : :
408 : : virtual void visit (HIR::QualifiedPathInExpression &expr) = 0;
409 : : virtual void visit (HIR::PathInExpression &expr) = 0;
410 : : virtual void visit (ClosureExpr &) = 0;
411 : : virtual void visit (StructExprStructFields &) = 0;
412 : : virtual void visit (StructExprStruct &) = 0;
413 : : virtual void visit (LiteralExpr &expr) = 0;
414 : : virtual void visit (BorrowExpr &expr) = 0;
415 : : virtual void visit (DereferenceExpr &expr) = 0;
416 : : virtual void visit (ErrorPropagationExpr &expr) = 0;
417 : : virtual void visit (NegationExpr &expr) = 0;
418 : : virtual void visit (ArithmeticOrLogicalExpr &expr) = 0;
419 : : virtual void visit (ComparisonExpr &expr) = 0;
420 : : virtual void visit (LazyBooleanExpr &expr) = 0;
421 : : virtual void visit (TypeCastExpr &expr) = 0;
422 : : virtual void visit (AssignmentExpr &expr) = 0;
423 : : virtual void visit (CompoundAssignmentExpr &expr) = 0;
424 : : virtual void visit (GroupedExpr &expr) = 0;
425 : : virtual void visit (ArrayExpr &expr) = 0;
426 : : virtual void visit (ArrayIndexExpr &expr) = 0;
427 : : virtual void visit (TupleExpr &expr) = 0;
428 : : virtual void visit (TupleIndexExpr &expr) = 0;
429 : : virtual void visit (CallExpr &expr) = 0;
430 : : virtual void visit (MethodCallExpr &expr) = 0;
431 : : virtual void visit (FieldAccessExpr &expr) = 0;
432 : : virtual void visit (BlockExpr &expr) = 0;
433 : : virtual void visit (ContinueExpr &expr) = 0;
434 : : virtual void visit (BreakExpr &expr) = 0;
435 : : virtual void visit (RangeFromToExpr &expr) = 0;
436 : : virtual void visit (RangeFromExpr &expr) = 0;
437 : : virtual void visit (RangeToExpr &expr) = 0;
438 : : virtual void visit (RangeFullExpr &expr) = 0;
439 : : virtual void visit (RangeFromToInclExpr &expr) = 0;
440 : : virtual void visit (RangeToInclExpr &expr) = 0;
441 : : virtual void visit (ReturnExpr &expr) = 0;
442 : : virtual void visit (UnsafeBlockExpr &expr) = 0;
443 : : virtual void visit (LoopExpr &expr) = 0;
444 : : virtual void visit (WhileLoopExpr &expr) = 0;
445 : : virtual void visit (WhileLetLoopExpr &expr) = 0;
446 : : virtual void visit (IfExpr &expr) = 0;
447 : : virtual void visit (IfExprConseqElse &expr) = 0;
448 : : virtual void visit (IfLetExpr &expr) = 0;
449 : : virtual void visit (IfLetExprConseqElse &expr) = 0;
450 : : virtual void visit (MatchExpr &expr) = 0;
451 : : virtual void visit (AwaitExpr &expr) = 0;
452 : : virtual void visit (AsyncBlockExpr &expr) = 0;
453 : : };
454 : :
455 : 63355 : class HIRPatternVisitor
456 : : {
457 : : public:
458 : : virtual void visit (IdentifierPattern &) = 0;
459 : : virtual void visit (LiteralPattern &) = 0;
460 : : virtual void visit (PathInExpression &) = 0;
461 : : virtual void visit (QualifiedPathInExpression &) = 0;
462 : : virtual void visit (RangePattern &) = 0;
463 : : virtual void visit (ReferencePattern &) = 0;
464 : : virtual void visit (SlicePattern &) = 0;
465 : : virtual void visit (AltPattern &) = 0;
466 : : virtual void visit (StructPattern &) = 0;
467 : : virtual void visit (TuplePattern &) = 0;
468 : : virtual void visit (TupleStructPattern &) = 0;
469 : : virtual void visit (WildcardPattern &) = 0;
470 : : };
471 : :
472 : : } // namespace HIR
473 : : } // namespace Rust
474 : :
475 : : #endif
|