https://gcc.gnu.org/g:955c7b66d73c1c9481dabb4ed93165c451ba0511
commit r16-4874-g955c7b66d73c1c9481dabb4ed93165c451ba0511 Author: Arthur Cohen <[email protected]> Date: Fri Aug 22 11:48:49 2025 +0200 gccrs: expand: Inherit from PointerVisitor gcc/rust/ChangeLog: * expand/rust-expand-visitor.cc: Remove old visitors. * expand/rust-expand-visitor.h: Likewise, plus inherit from PointerVisitor. Diff: --- 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 590b95e235fb..4593cc3f9308 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 d0ed8439c12d..b79eb663c6c3 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;
