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 &param : 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 &param) override;
   void visit (AST::LifetimeWhereClauseItem &) override;
-- 
2.50.1

Reply via email to