From: Arthur Cohen <[email protected]>
gcc/rust/ChangeLog:
* expand/rust-expand-visitor.cc: Remove old visitors.
* expand/rust-expand-visitor.h: Likewise, plus inherit from
PointerVisitor.
---
gcc/rust/expand/rust-expand-visitor.cc | 34 --------------------------
gcc/rust/expand/rust-expand-visitor.h | 29 ++++++++++++++++++----
2 files changed, 24 insertions(+), 39 deletions(-)
diff --git a/gcc/rust/expand/rust-expand-visitor.cc
b/gcc/rust/expand/rust-expand-visitor.cc
index 590b95e235f..4593cc3f930 100644
--- a/gcc/rust/expand/rust-expand-visitor.cc
+++ b/gcc/rust/expand/rust-expand-visitor.cc
@@ -597,12 +597,6 @@ void
ExpandVisitor::visit (AST::MetaItemPathExpr &)
{}
-void
-ExpandVisitor::visit (AST::ErrorPropagationExpr &expr)
-{
- visit (expr.get_propagating_expr ());
-}
-
void
ExpandVisitor::visit (AST::ArithmeticOrLogicalExpr &expr)
{
@@ -664,15 +658,6 @@ ExpandVisitor::visit (AST::CallExpr &expr)
maybe_expand_expr (param);
}
-void
-ExpandVisitor::visit (AST::MethodCallExpr &expr)
-{
- visit (expr.get_receiver_expr ());
-
- for (auto ¶m : expr.get_params ())
- maybe_expand_expr (param);
-}
-
void
ExpandVisitor::visit (AST::ClosureExprInner &expr)
{
@@ -739,25 +724,6 @@ ExpandVisitor::visit (AST::IfLetExprConseqElse &expr)
visit (expr.get_else_block ());
}
-void
-ExpandVisitor::visit (AST::MatchExpr &expr)
-{
- visit (expr.get_scrutinee_expr ());
-
- for (auto &match_case : expr.get_match_cases ())
- {
- auto &arm = match_case.get_arm ();
-
- for (auto &pattern : arm.get_patterns ())
- maybe_expand_pattern (pattern);
-
- if (arm.has_match_arm_guard ())
- maybe_expand_expr (arm.get_guard_expr_ptr ());
-
- maybe_expand_expr (match_case.get_expr_ptr ());
- }
-}
-
void
ExpandVisitor::visit (AST::TupleExpr &expr)
{
diff --git a/gcc/rust/expand/rust-expand-visitor.h
b/gcc/rust/expand/rust-expand-visitor.h
index d0ed8439c12..b79eb663c6c 100644
--- a/gcc/rust/expand/rust-expand-visitor.h
+++ b/gcc/rust/expand/rust-expand-visitor.h
@@ -19,6 +19,7 @@
#ifndef RUST_EXPAND_VISITOR_H
#define RUST_EXPAND_VISITOR_H
+#include "rust-ast-pointer-visitor.h"
#include "rust-ast-visitor.h"
#include "rust-item.h"
#include "rust-macro-expand.h"
@@ -36,7 +37,7 @@ bool is_derive (AST::Attribute &attr);
*/
bool is_builtin (AST::Attribute &attr);
-class ExpandVisitor : public AST::DefaultASTVisitor
+class ExpandVisitor : public AST::PointerVisitor
{
public:
ExpandVisitor (MacroExpander &expander)
@@ -46,7 +47,28 @@ public:
/* Expand all of the macro invocations currently contained in a crate */
void go (AST::Crate &crate);
- using AST::DefaultASTVisitor::visit;
+ using AST::PointerVisitor::reseat;
+ using AST::PointerVisitor::visit;
+
+ void reseat (std::unique_ptr<AST::Expr> &ptr) override
+ {
+ maybe_expand_expr (ptr);
+ }
+
+ void reseat (std::unique_ptr<AST::Type> &ptr) override
+ {
+ maybe_expand_type (ptr);
+ }
+
+ void reseat (std::unique_ptr<AST::TypeNoBounds> &ptr) override
+ {
+ maybe_expand_type (ptr);
+ }
+
+ void reseat (std::unique_ptr<AST::Pattern> &ptr) override
+ {
+ maybe_expand_pattern (ptr);
+ }
/**
* Maybe expand a macro invocation in lieu of an expression, type or pattern.
@@ -214,7 +236,6 @@ public:
void visit (AST::AttrInputMacro &) override;
void visit (AST::MetaItemLitExpr &) override;
void visit (AST::MetaItemPathExpr &) override;
- void visit (AST::ErrorPropagationExpr &expr) override;
void visit (AST::ArithmeticOrLogicalExpr &expr) override;
void visit (AST::ComparisonExpr &expr) override;
void visit (AST::LazyBooleanExpr &expr) override;
@@ -225,7 +246,6 @@ public:
void visit (AST::StructExprStruct &expr) override;
void visit (AST::CallExpr &expr) override;
- void visit (AST::MethodCallExpr &expr) override;
void visit (AST::ClosureExprInner &expr) override;
void visit (AST::BlockExpr &expr) override;
@@ -236,7 +256,6 @@ public:
void visit (AST::IfExprConseqElse &expr) override;
void visit (AST::IfLetExpr &expr) override;
void visit (AST::IfLetExprConseqElse &expr) override;
- void visit (AST::MatchExpr &expr) override;
void visit (AST::TupleExpr &expr) override;
void visit (AST::TypeParam ¶m) override;
void visit (AST::LifetimeWhereClauseItem &) override;
--
2.50.1