]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
gccrs: expand: Inherit from PointerVisitor
authorArthur Cohen <arthur.cohen@embecosm.com>
Fri, 22 Aug 2025 09:48:49 +0000 (11:48 +0200)
committerArthur Cohen <arthur.cohen@embecosm.com>
Thu, 30 Oct 2025 20:30:53 +0000 (21:30 +0100)
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
gcc/rust/expand/rust-expand-visitor.h

index 590b95e235fbce1b1df958f7c22f42c0d2b3fe06..4593cc3f930853f666818f724b0629122b130592 100644 (file)
@@ -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)
 {
index d0ed8439c12d56724f7f73c0f29c92d0eaf35247..b79eb663c6c3b1495662b1736f4248ee4a751d48 100644 (file)
@@ -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;