19
19
#ifndef RUST_EXPAND_VISITOR_H
20
20
#define RUST_EXPAND_VISITOR_H
21
21
22
+ #include " rust-ast-pointer-visitor.h"
22
23
#include " rust-ast-visitor.h"
23
24
#include " rust-item.h"
24
25
#include " rust-macro-expand.h"
@@ -36,7 +37,7 @@ bool is_derive (AST::Attribute &attr);
36
37
*/
37
38
bool is_builtin (AST::Attribute &attr);
38
39
39
- class ExpandVisitor : public AST ::DefaultASTVisitor
40
+ class ExpandVisitor : public AST ::PointerVisitor
40
41
{
41
42
public:
42
43
ExpandVisitor (MacroExpander &expander)
@@ -46,7 +47,28 @@ class ExpandVisitor : public AST::DefaultASTVisitor
46
47
/* Expand all of the macro invocations currently contained in a crate */
47
48
void go (AST::Crate &crate);
48
49
49
- using AST::DefaultASTVisitor::visit;
50
+ using AST::PointerVisitor::reseat;
51
+ using AST::PointerVisitor::visit;
52
+
53
+ void reseat (std::unique_ptr<AST::Expr> &ptr) override
54
+ {
55
+ maybe_expand_expr (ptr);
56
+ }
57
+
58
+ void reseat (std::unique_ptr<AST::Type> &ptr) override
59
+ {
60
+ maybe_expand_type (ptr);
61
+ }
62
+
63
+ void reseat (std::unique_ptr<AST::TypeNoBounds> &ptr) override
64
+ {
65
+ maybe_expand_type (ptr);
66
+ }
67
+
68
+ void reseat (std::unique_ptr<AST::Pattern> &ptr) override
69
+ {
70
+ maybe_expand_pattern (ptr);
71
+ }
50
72
51
73
/* *
52
74
* Maybe expand a macro invocation in lieu of an expression, type or pattern.
@@ -214,7 +236,6 @@ class ExpandVisitor : public AST::DefaultASTVisitor
214
236
void visit (AST::AttrInputMacro &) override ;
215
237
void visit (AST::MetaItemLitExpr &) override ;
216
238
void visit (AST::MetaItemPathExpr &) override ;
217
- void visit (AST::ErrorPropagationExpr &expr) override ;
218
239
void visit (AST::ArithmeticOrLogicalExpr &expr) override ;
219
240
void visit (AST::ComparisonExpr &expr) override ;
220
241
void visit (AST::LazyBooleanExpr &expr) override ;
@@ -225,7 +246,6 @@ class ExpandVisitor : public AST::DefaultASTVisitor
225
246
void visit (AST::StructExprStruct &expr) override ;
226
247
227
248
void visit (AST::CallExpr &expr) override ;
228
- void visit (AST::MethodCallExpr &expr) override ;
229
249
void visit (AST::ClosureExprInner &expr) override ;
230
250
231
251
void visit (AST::BlockExpr &expr) override ;
@@ -236,7 +256,6 @@ class ExpandVisitor : public AST::DefaultASTVisitor
236
256
void visit (AST::IfExprConseqElse &expr) override ;
237
257
void visit (AST::IfLetExpr &expr) override ;
238
258
void visit (AST::IfLetExprConseqElse &expr) override ;
239
- void visit (AST::MatchExpr &expr) override ;
240
259
void visit (AST::TupleExpr &expr) override ;
241
260
void visit (AST::TypeParam ¶m) override ;
242
261
void visit (AST::LifetimeWhereClauseItem &) override ;
0 commit comments