From ba7f3c6d3be644b2fe5737ba134dbd8d61f73b2a Mon Sep 17 00:00:00 2001 From: Arthur Cohen Date: Tue, 22 Jul 2025 17:16:29 +0200 Subject: [PATCH] gccrs: desugar: Cleanup for-loop desugar implementation. gcc/rust/ChangeLog: * ast/rust-desugar-for-loops.cc: Remove functions implemented in AST::Builder. * ast/rust-desugar-for-loops.h: Likewise. --- gcc/rust/ast/rust-desugar-for-loops.cc | 23 ++++------------------- gcc/rust/ast/rust-desugar-for-loops.h | 2 -- 2 files changed, 4 insertions(+), 21 deletions(-) diff --git a/gcc/rust/ast/rust-desugar-for-loops.cc b/gcc/rust/ast/rust-desugar-for-loops.cc index 496e8efb557..5cc1c19ec14 100644 --- a/gcc/rust/ast/rust-desugar-for-loops.cc +++ b/gcc/rust/ast/rust-desugar-for-loops.cc @@ -30,19 +30,10 @@ namespace AST { DesugarForLoops::DesugarForLoops () {} -MatchArm -DesugarForLoops::DesugarCtx::make_match_arm (std::unique_ptr &&path) -{ - auto patterns = std::vector> (); - patterns.emplace_back (std::move (path)); - - return MatchArm (std::move (patterns), loc); -} - MatchCase DesugarForLoops::DesugarCtx::make_break_arm () { - auto arm = make_match_arm (std::unique_ptr (new PathInExpression ( + auto arm = builder.match_arm (std::unique_ptr (new PathInExpression ( builder.path_in_expression (LangItem::Kind::OPTION_NONE)))); auto break_expr @@ -65,7 +56,7 @@ DesugarForLoops::DesugarCtx::make_continue_arm () builder.path_in_expression (LangItem::Kind::OPTION_SOME), std::move (pattern_item))); - auto val_arm = make_match_arm (std::move (pattern)); + auto val_arm = builder.match_arm (std::move (pattern)); auto next = builder.identifier (DesugarCtx::next_value_id); @@ -77,12 +68,6 @@ DesugarForLoops::DesugarCtx::make_continue_arm () return MatchCase (std::move (val_arm), std::move (assignment)); } -std::unique_ptr -DesugarForLoops::DesugarCtx::statementify (std::unique_ptr &&expr) -{ - return std::unique_ptr (new ExprStmt (std::move (expr), loc, true)); -} - std::unique_ptr DesugarForLoops::desugar (ForLoopExpr &expr) { @@ -126,10 +111,10 @@ DesugarForLoops::desugar (ForLoopExpr &expr) auto loop_stmts = std::vector> (); loop_stmts.emplace_back (std::move (let_next)); - loop_stmts.emplace_back (ctx.statementify (std::move (match_next))); + loop_stmts.emplace_back (ctx.builder.statementify (std::move (match_next))); loop_stmts.emplace_back (std::move (let_pat)); loop_stmts.emplace_back ( - ctx.statementify (expr.get_loop_block ().clone_expr ())); + ctx.builder.statementify (expr.get_loop_block ().clone_expr ())); // loop { // ; diff --git a/gcc/rust/ast/rust-desugar-for-loops.h b/gcc/rust/ast/rust-desugar-for-loops.h index 3a8365cebbb..96b63ffb0c3 100644 --- a/gcc/rust/ast/rust-desugar-for-loops.h +++ b/gcc/rust/ast/rust-desugar-for-loops.h @@ -83,10 +83,8 @@ private: Builder builder; location_t loc; - MatchArm make_match_arm (std::unique_ptr &&pattern); MatchCase make_break_arm (); MatchCase make_continue_arm (); - std::unique_ptr statementify (std::unique_ptr &&expr); constexpr static const char *continue_pattern_id = "#val"; constexpr static const char *next_value_id = "#__next"; -- 2.47.2