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 : 16511 : 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 (ExternBlock &block) = 0;
118 : : virtual void visit (LiteralPattern &pattern) = 0;
119 : : virtual void visit (IdentifierPattern &pattern) = 0;
120 : : virtual void visit (WildcardPattern &pattern) = 0;
121 : : virtual void visit (RangePatternBoundLiteral &bound) = 0;
122 : : virtual void visit (RangePatternBoundPath &bound) = 0;
123 : : virtual void visit (RangePatternBoundQualPath &bound) = 0;
124 : : virtual void visit (RangePattern &pattern) = 0;
125 : : virtual void visit (ReferencePattern &pattern) = 0;
126 : : virtual void visit (StructPatternFieldTuplePat &field) = 0;
127 : : virtual void visit (StructPatternFieldIdentPat &field) = 0;
128 : : virtual void visit (StructPatternFieldIdent &field) = 0;
129 : : virtual void visit (StructPattern &pattern) = 0;
130 : : virtual void visit (TupleStructItemsNoRange &tuple_items) = 0;
131 : : virtual void visit (TupleStructItemsRange &tuple_items) = 0;
132 : : virtual void visit (TupleStructPattern &pattern) = 0;
133 : : virtual void visit (TuplePatternItemsMultiple &tuple_items) = 0;
134 : : virtual void visit (TuplePatternItemsRanged &tuple_items) = 0;
135 : : virtual void visit (TuplePattern &pattern) = 0;
136 : : virtual void visit (SlicePattern &pattern) = 0;
137 : : virtual void visit (AltPattern &pattern) = 0;
138 : : virtual void visit (EmptyStmt &stmt) = 0;
139 : : virtual void visit (LetStmt &stmt) = 0;
140 : : virtual void visit (ExprStmt &stmt) = 0;
141 : : virtual void visit (TraitBound &bound) = 0;
142 : : virtual void visit (ImplTraitType &type) = 0;
143 : : virtual void visit (TraitObjectType &type) = 0;
144 : : virtual void visit (ParenthesisedType &type) = 0;
145 : : virtual void visit (ImplTraitTypeOneBound &type) = 0;
146 : : virtual void visit (TupleType &type) = 0;
147 : : virtual void visit (NeverType &type) = 0;
148 : : virtual void visit (RawPointerType &type) = 0;
149 : : virtual void visit (ReferenceType &type) = 0;
150 : : virtual void visit (ArrayType &type) = 0;
151 : : virtual void visit (SliceType &type) = 0;
152 : : virtual void visit (InferredType &type) = 0;
153 : : virtual void visit (BareFunctionType &type) = 0;
154 : : };
155 : :
156 : 9837 : class HIRFullVisitorBase : public HIRFullVisitor
157 : : {
158 : : public:
159 : 3279 : virtual ~HIRFullVisitorBase () {}
160 : :
161 : 0 : virtual void visit (Lifetime &) override {}
162 : 0 : virtual void visit (LifetimeParam &) override {}
163 : 0 : virtual void visit (PathInExpression &) override {}
164 : 0 : virtual void visit (TypePathSegment &) override {}
165 : 0 : virtual void visit (TypePathSegmentGeneric &) override {}
166 : 0 : virtual void visit (TypePathSegmentFunction &) override {}
167 : 0 : virtual void visit (TypePath &) override {}
168 : 61 : virtual void visit (QualifiedPathInExpression &) override {}
169 : 0 : virtual void visit (QualifiedPathInType &) override {}
170 : :
171 : 15143 : virtual void visit (LiteralExpr &) override {}
172 : 0 : virtual void visit (BorrowExpr &) override {}
173 : 0 : virtual void visit (DereferenceExpr &) override {}
174 : 0 : virtual void visit (ErrorPropagationExpr &) override {}
175 : 0 : virtual void visit (NegationExpr &) override {}
176 : 0 : virtual void visit (ArithmeticOrLogicalExpr &) override {}
177 : 0 : virtual void visit (ComparisonExpr &) override {}
178 : 0 : virtual void visit (LazyBooleanExpr &) override {}
179 : 0 : virtual void visit (TypeCastExpr &) override {}
180 : 0 : virtual void visit (AssignmentExpr &) override {}
181 : 0 : virtual void visit (CompoundAssignmentExpr &) override {}
182 : 0 : virtual void visit (GroupedExpr &) override {}
183 : :
184 : 0 : virtual void visit (ArrayElemsValues &) override {}
185 : 84 : virtual void visit (ArrayElemsCopied &) override {}
186 : 0 : virtual void visit (ArrayExpr &) override {}
187 : 0 : virtual void visit (ArrayIndexExpr &) override {}
188 : 0 : virtual void visit (TupleExpr &) override {}
189 : 0 : virtual void visit (TupleIndexExpr &) override {}
190 : 0 : virtual void visit (StructExprStruct &) override {}
191 : :
192 : 112 : virtual void visit (StructExprFieldIdentifier &) override {}
193 : 0 : virtual void visit (StructExprFieldIdentifierValue &) override {}
194 : :
195 : 42 : virtual void visit (StructExprFieldIndexValue &) override {}
196 : 0 : virtual void visit (StructExprStructFields &) override {}
197 : 0 : virtual void visit (StructExprStructBase &) override {}
198 : :
199 : 0 : virtual void visit (CallExpr &) override {}
200 : 0 : virtual void visit (MethodCallExpr &) override {}
201 : 0 : virtual void visit (FieldAccessExpr &) override {}
202 : 0 : virtual void visit (ClosureExpr &) override {}
203 : 0 : virtual void visit (BlockExpr &) override {}
204 : 7 : virtual void visit (ContinueExpr &) override {}
205 : 0 : virtual void visit (BreakExpr &) override {}
206 : 43 : virtual void visit (RangeFromToExpr &) override {}
207 : 0 : virtual void visit (RangeFromExpr &) override {}
208 : 0 : virtual void visit (RangeToExpr &) override {}
209 : 0 : virtual void visit (RangeFullExpr &) override {}
210 : 0 : virtual void visit (RangeFromToInclExpr &) override {}
211 : 0 : virtual void visit (RangeToInclExpr &) override {}
212 : 0 : virtual void visit (ReturnExpr &) override {}
213 : 0 : virtual void visit (UnsafeBlockExpr &) override {}
214 : 0 : virtual void visit (LoopExpr &) override {}
215 : 0 : virtual void visit (WhileLoopExpr &) override {}
216 : 0 : virtual void visit (WhileLetLoopExpr &) override {}
217 : 0 : virtual void visit (IfExpr &) override {}
218 : 0 : virtual void visit (IfExprConseqElse &) override {}
219 : 0 : virtual void visit (IfLetExpr &) override {}
220 : 1 : virtual void visit (IfLetExprConseqElse &) override {}
221 : :
222 : 0 : virtual void visit (MatchExpr &) override {}
223 : 0 : virtual void visit (AwaitExpr &) override {}
224 : 0 : virtual void visit (AsyncBlockExpr &) override {}
225 : :
226 : 0 : virtual void visit (TypeParam &) override {}
227 : 0 : virtual void visit (ConstGenericParam &) override {}
228 : :
229 : 0 : virtual void visit (LifetimeWhereClauseItem &) override {}
230 : 0 : virtual void visit (TypeBoundWhereClauseItem &) override {}
231 : 272 : virtual void visit (Module &) override {}
232 : 0 : virtual void visit (ExternCrate &) override {}
233 : :
234 : 0 : virtual void visit (UseTreeGlob &) override {}
235 : 0 : virtual void visit (UseTreeList &) override {}
236 : 0 : virtual void visit (UseTreeRebind &) override {}
237 : 0 : virtual void visit (UseDeclaration &) override {}
238 : 0 : virtual void visit (Function &) override {}
239 : 770 : virtual void visit (TypeAlias &) override {}
240 : 2249 : virtual void visit (StructStruct &) override {}
241 : 2311 : virtual void visit (TupleStruct &) override {}
242 : 0 : virtual void visit (EnumItem &) override {}
243 : 0 : virtual void visit (EnumItemTuple &) override {}
244 : 0 : virtual void visit (EnumItemStruct &) override {}
245 : 0 : virtual void visit (EnumItemDiscriminant &) override {}
246 : 480 : virtual void visit (Enum &) override {}
247 : 244 : virtual void visit (Union &) override {}
248 : 1564 : virtual void visit (ConstantItem &) override {}
249 : 118 : virtual void visit (StaticItem &) override {}
250 : 0 : virtual void visit (TraitItemFunc &) override {}
251 : 0 : virtual void visit (TraitItemConst &) override {}
252 : 0 : virtual void visit (TraitItemType &) override {}
253 : 3933 : virtual void visit (Trait &) override {}
254 : 2699 : virtual void visit (ImplBlock &) override {}
255 : :
256 : 0 : virtual void visit (ExternalStaticItem &) override {}
257 : 0 : virtual void visit (ExternalFunctionItem &) override {}
258 : 1988 : virtual void visit (ExternBlock &) override {}
259 : :
260 : 0 : virtual void visit (LiteralPattern &) override {}
261 : 0 : virtual void visit (IdentifierPattern &) override {}
262 : 0 : virtual void visit (WildcardPattern &) override {}
263 : :
264 : 0 : virtual void visit (RangePatternBoundLiteral &) override {}
265 : 0 : virtual void visit (RangePatternBoundPath &) override {}
266 : 0 : virtual void visit (RangePatternBoundQualPath &) override {}
267 : 0 : virtual void visit (RangePattern &) override {}
268 : 0 : virtual void visit (ReferencePattern &) override {}
269 : :
270 : 0 : virtual void visit (StructPatternFieldTuplePat &) override {}
271 : 0 : virtual void visit (StructPatternFieldIdentPat &) override {}
272 : 0 : virtual void visit (StructPatternFieldIdent &) override {}
273 : 0 : virtual void visit (StructPattern &) override {}
274 : :
275 : 0 : virtual void visit (TupleStructItemsNoRange &) override {}
276 : 0 : virtual void visit (TupleStructItemsRange &) override {}
277 : 0 : virtual void visit (TupleStructPattern &) override {}
278 : :
279 : 0 : virtual void visit (TuplePatternItemsMultiple &) override {}
280 : 0 : virtual void visit (TuplePatternItemsRanged &) override {}
281 : 0 : virtual void visit (TuplePattern &) override {}
282 : 0 : virtual void visit (SlicePattern &) override {}
283 : 0 : virtual void visit (AltPattern &) override {}
284 : :
285 : 44 : virtual void visit (EmptyStmt &) override {}
286 : 0 : virtual void visit (LetStmt &) override {}
287 : 0 : virtual void visit (ExprStmt &) override {}
288 : :
289 : 0 : virtual void visit (TraitBound &) override {}
290 : 0 : virtual void visit (ImplTraitType &) override {}
291 : 0 : virtual void visit (TraitObjectType &) override {}
292 : 0 : virtual void visit (ParenthesisedType &) override {}
293 : 0 : virtual void visit (ImplTraitTypeOneBound &) override {}
294 : 0 : virtual void visit (TupleType &) override {}
295 : 0 : virtual void visit (NeverType &) override {}
296 : 0 : virtual void visit (RawPointerType &) override {}
297 : 0 : virtual void visit (ReferenceType &) override {}
298 : 0 : virtual void visit (ArrayType &) override {}
299 : 0 : virtual void visit (SliceType &) override {}
300 : 0 : virtual void visit (InferredType &) override {}
301 : 0 : virtual void visit (BareFunctionType &) override {}
302 : : };
303 : :
304 : 3165 : class HIRExternalItemVisitor
305 : : {
306 : : public:
307 : : virtual void visit (ExternalStaticItem &item) = 0;
308 : : virtual void visit (ExternalFunctionItem &item) = 0;
309 : : };
310 : :
311 : 1643 : class HIRTraitItemVisitor
312 : : {
313 : : public:
314 : : virtual void visit (TraitItemFunc &item) = 0;
315 : : virtual void visit (TraitItemConst &item) = 0;
316 : : virtual void visit (TraitItemType &item) = 0;
317 : : };
318 : :
319 : 36276 : class HIRVisItemVisitor
320 : : {
321 : : public:
322 : : virtual void visit (Module &module) = 0;
323 : : virtual void visit (ExternCrate &crate) = 0;
324 : : virtual void visit (UseDeclaration &use_decl) = 0;
325 : : virtual void visit (Function &function) = 0;
326 : : virtual void visit (TypeAlias &type_alias) = 0;
327 : : virtual void visit (StructStruct &struct_item) = 0;
328 : : virtual void visit (TupleStruct &tuple_struct) = 0;
329 : : virtual void visit (Enum &enum_item) = 0;
330 : : virtual void visit (Union &union_item) = 0;
331 : : virtual void visit (ConstantItem &const_item) = 0;
332 : : virtual void visit (StaticItem &static_item) = 0;
333 : : virtual void visit (Trait &trait) = 0;
334 : : virtual void visit (ImplBlock &impl) = 0;
335 : : virtual void visit (ExternBlock &block) = 0;
336 : : };
337 : :
338 : 9399 : class HIRImplVisitor
339 : : {
340 : : public:
341 : : virtual void visit (Function &function) = 0;
342 : : virtual void visit (ConstantItem &const_item) = 0;
343 : : virtual void visit (TypeAlias &type_alias) = 0;
344 : : };
345 : :
346 : 35329 : class HIRTypeVisitor
347 : : {
348 : : public:
349 : : virtual void visit (TypePathSegmentFunction &segment) = 0;
350 : : virtual void visit (TypePath &path) = 0;
351 : : virtual void visit (QualifiedPathInType &path) = 0;
352 : : virtual void visit (TraitBound &bound) = 0;
353 : : virtual void visit (ImplTraitType &type) = 0;
354 : : virtual void visit (TraitObjectType &type) = 0;
355 : : virtual void visit (ParenthesisedType &type) = 0;
356 : : virtual void visit (ImplTraitTypeOneBound &type) = 0;
357 : : virtual void visit (TupleType &type) = 0;
358 : : virtual void visit (NeverType &type) = 0;
359 : : virtual void visit (RawPointerType &type) = 0;
360 : : virtual void visit (ReferenceType &type) = 0;
361 : : virtual void visit (ArrayType &type) = 0;
362 : : virtual void visit (SliceType &type) = 0;
363 : : virtual void visit (InferredType &type) = 0;
364 : : virtual void visit (BareFunctionType &type) = 0;
365 : : };
366 : :
367 : 54296 : class HIRStmtVisitor
368 : : {
369 : : public:
370 : : virtual void visit (EnumItemTuple &) = 0;
371 : : virtual void visit (EnumItemStruct &) = 0;
372 : : virtual void visit (EnumItem &item) = 0;
373 : : virtual void visit (TupleStruct &tuple_struct) = 0;
374 : : virtual void visit (EnumItemDiscriminant &) = 0;
375 : : virtual void visit (TypePathSegmentFunction &segment) = 0;
376 : : virtual void visit (TypePath &path) = 0;
377 : : virtual void visit (QualifiedPathInType &path) = 0;
378 : : virtual void visit (Module &module) = 0;
379 : : virtual void visit (ExternCrate &crate) = 0;
380 : : virtual void visit (UseDeclaration &use_decl) = 0;
381 : : virtual void visit (Function &function) = 0;
382 : : virtual void visit (TypeAlias &type_alias) = 0;
383 : : virtual void visit (StructStruct &struct_item) = 0;
384 : : virtual void visit (Enum &enum_item) = 0;
385 : : virtual void visit (Union &union_item) = 0;
386 : : virtual void visit (ConstantItem &const_item) = 0;
387 : : virtual void visit (StaticItem &static_item) = 0;
388 : : virtual void visit (Trait &trait) = 0;
389 : : virtual void visit (ImplBlock &impl) = 0;
390 : : virtual void visit (ExternBlock &block) = 0;
391 : : virtual void visit (EmptyStmt &stmt) = 0;
392 : : virtual void visit (LetStmt &stmt) = 0;
393 : : virtual void visit (ExprStmt &stmt) = 0;
394 : : };
395 : :
396 : 82635 : class HIRExpressionVisitor
397 : : {
398 : : public:
399 : : // These are StructExprField
400 : : // Added because of CompileStructExprField
401 : : virtual void visit (StructExprFieldIdentifier &field) = 0;
402 : : virtual void visit (StructExprFieldIdentifierValue &field) = 0;
403 : : virtual void visit (StructExprFieldIndexValue &field) = 0;
404 : :
405 : : virtual void visit (HIR::QualifiedPathInExpression &expr) = 0;
406 : : virtual void visit (HIR::PathInExpression &expr) = 0;
407 : : virtual void visit (ClosureExpr &) = 0;
408 : : virtual void visit (StructExprStructFields &) = 0;
409 : : virtual void visit (StructExprStruct &) = 0;
410 : : virtual void visit (LiteralExpr &expr) = 0;
411 : : virtual void visit (BorrowExpr &expr) = 0;
412 : : virtual void visit (DereferenceExpr &expr) = 0;
413 : : virtual void visit (ErrorPropagationExpr &expr) = 0;
414 : : virtual void visit (NegationExpr &expr) = 0;
415 : : virtual void visit (ArithmeticOrLogicalExpr &expr) = 0;
416 : : virtual void visit (ComparisonExpr &expr) = 0;
417 : : virtual void visit (LazyBooleanExpr &expr) = 0;
418 : : virtual void visit (TypeCastExpr &expr) = 0;
419 : : virtual void visit (AssignmentExpr &expr) = 0;
420 : : virtual void visit (CompoundAssignmentExpr &expr) = 0;
421 : : virtual void visit (GroupedExpr &expr) = 0;
422 : : virtual void visit (ArrayExpr &expr) = 0;
423 : : virtual void visit (ArrayIndexExpr &expr) = 0;
424 : : virtual void visit (TupleExpr &expr) = 0;
425 : : virtual void visit (TupleIndexExpr &expr) = 0;
426 : : virtual void visit (CallExpr &expr) = 0;
427 : : virtual void visit (MethodCallExpr &expr) = 0;
428 : : virtual void visit (FieldAccessExpr &expr) = 0;
429 : : virtual void visit (BlockExpr &expr) = 0;
430 : : virtual void visit (ContinueExpr &expr) = 0;
431 : : virtual void visit (BreakExpr &expr) = 0;
432 : : virtual void visit (RangeFromToExpr &expr) = 0;
433 : : virtual void visit (RangeFromExpr &expr) = 0;
434 : : virtual void visit (RangeToExpr &expr) = 0;
435 : : virtual void visit (RangeFullExpr &expr) = 0;
436 : : virtual void visit (RangeFromToInclExpr &expr) = 0;
437 : : virtual void visit (RangeToInclExpr &expr) = 0;
438 : : virtual void visit (ReturnExpr &expr) = 0;
439 : : virtual void visit (UnsafeBlockExpr &expr) = 0;
440 : : virtual void visit (LoopExpr &expr) = 0;
441 : : virtual void visit (WhileLoopExpr &expr) = 0;
442 : : virtual void visit (WhileLetLoopExpr &expr) = 0;
443 : : virtual void visit (IfExpr &expr) = 0;
444 : : virtual void visit (IfExprConseqElse &expr) = 0;
445 : : virtual void visit (IfLetExpr &expr) = 0;
446 : : virtual void visit (IfLetExprConseqElse &expr) = 0;
447 : : virtual void visit (MatchExpr &expr) = 0;
448 : : virtual void visit (AwaitExpr &expr) = 0;
449 : : virtual void visit (AsyncBlockExpr &expr) = 0;
450 : : };
451 : :
452 : 63283 : class HIRPatternVisitor
453 : : {
454 : : public:
455 : : virtual void visit (IdentifierPattern &) = 0;
456 : : virtual void visit (LiteralPattern &) = 0;
457 : : virtual void visit (PathInExpression &) = 0;
458 : : virtual void visit (QualifiedPathInExpression &) = 0;
459 : : virtual void visit (RangePattern &) = 0;
460 : : virtual void visit (ReferencePattern &) = 0;
461 : : virtual void visit (SlicePattern &) = 0;
462 : : virtual void visit (AltPattern &) = 0;
463 : : virtual void visit (StructPattern &) = 0;
464 : : virtual void visit (TuplePattern &) = 0;
465 : : virtual void visit (TupleStructPattern &) = 0;
466 : : virtual void visit (WildcardPattern &) = 0;
467 : : };
468 : :
469 : : } // namespace HIR
470 : : } // namespace Rust
471 : :
472 : : #endif
|