From: Owen Avery Date: Thu, 16 Mar 2023 03:05:07 +0000 (-0400) Subject: gccrs: Unify AST::IfExprConseqIf{,Let} into AST::IfExprConseqElse X-Git-Tag: basepoints/gcc-15~2670 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d88234af9ffa2f51e498dc518ccab8b1c293a148;p=thirdparty%2Fgcc.git gccrs: Unify AST::IfExprConseqIf{,Let} into AST::IfExprConseqElse This simplifies the AST's representation of if-statements to match the HIR. gcc/rust/ChangeLog: * ast/rust-expr.h (class IfExprConseqElse): Make else_block ExprWithBlock. (class IfExprConseqIf): Remove. (class IfExprConseqIfLet): Remove. * ast/rust-ast-full-decls.h (class IfExprConseqIf): Remove. (class IfExprConseqIfLet): Remove. * ast/rust-ast.cc (IfExprConseqElse::as_string): Adjust output. (IfExprConseqIf::as_string): Remove. (IfExprConseqIfLet::as_string): Remove. (IfExprConseqIf::accept_vis): Remove. (IfExprConseqIfLet::accept_vis): Remove. * ast/rust-ast-visitor.h (ASTVisitor::visit): Remove IfExprConseqIf{,Let} visitors. * ast/rust-ast-tokenstream.cc (TokenStream::visit): Likewise. * ast/rust-ast-tokenstream.h (TokenStream::visit): Likewise. * ast/rust-ast-dump.cc (Dump::visit): Likewise. * ast/rust-ast-dump.h (Dump::visit): Likewise. * checks/errors/rust-feature-gate.h (FeatureGate::visit): Likewise. * util/rust-attributes.cc (AttributeChecker::visit): Likewise. * util/rust-attributes.h (AttributeChecker::visit): Likewise. * resolve/rust-early-name-resolver.cc (EarlyNameResolver::visit): Likewise. * resolve/rust-early-name-resolver.h (EarlyNameResolver::visit): Likewise. * resolve/rust-ast-resolve-base.h (ResolverBase::visit): Likewise. * resolve/rust-ast-resolve-base.cc (ResolverBase::visit): Likewise. * resolve/rust-ast-resolve-expr.h (ResolveExpr::visit): Remove IfExprConseqIf visitor. * resolve/rust-ast-resolve-expr.cc (ResolveExpr::visit): Likewise. * expand/rust-cfg-strip.cc (CfgStrip::visit): Remove IfExprConseqIf{,Let} visitors. * expand/rust-cfg-strip.h (CfgStrip::visit): Likewise. * expand/rust-expand-visitor.cc (ExpandVisitor::visit): Likewise. * expand/rust-expand-visitor.h (ExpandVisitor::visit): Likewise. * hir/rust-ast-lower-base.cc (ASTLoweringBase::visit): Likewise. * hir/rust-ast-lower-base.h (ASTLoweringBase::visit): Likewise. * hir/rust-ast-lower-block.h (ASTLoweringIfBlock::visit): Remove IfExprConseqIf visitor. (ASTLoweringExprWithBlock::visit): Likewise. * hir/rust-ast-lower.cc (ASTLoweringIfBlock::visit): Remove IfExprConseqIf visitor, adjust IfExprConseqElse lowering. * hir/rust-ast-lower-expr.h (ASTLoweringExpr::visit): Remove IfExprConseqIf visitor. * hir/rust-ast-lower-expr.cc (ASTLoweringExpr::visit): Likewise. * parse/rust-parse-impl.h (Parser::parse_if_expr): Replace IfExprConseqIf{,Let} with IfExprConseqElse. Signed-off-by: Owen Avery --- diff --git a/gcc/rust/ast/rust-ast-dump.cc b/gcc/rust/ast/rust-ast-dump.cc index d25a2a4af1aa..12cbfacb5d00 100644 --- a/gcc/rust/ast/rust-ast-dump.cc +++ b/gcc/rust/ast/rust-ast-dump.cc @@ -936,22 +936,6 @@ Dump::visit (IfExprConseqElse &expr) visit (expr.get_else_block ()); } -void -Dump::visit (IfExprConseqIf &expr) -{ - stream << "if "; - visit (expr.get_condition_expr ()); - stream << " "; - visit (expr.get_if_block ()); - stream << indentation << "else "; - // The "if" part of the "else if" is printed by the next visitor - visit (expr.get_conseq_if_expr ()); -} - -void -Dump::visit (IfExprConseqIfLet &) -{} - void Dump::visit (IfLetExpr &) {} diff --git a/gcc/rust/ast/rust-ast-dump.h b/gcc/rust/ast/rust-ast-dump.h index 26f7208ca4e3..a48d4761bb6e 100644 --- a/gcc/rust/ast/rust-ast-dump.h +++ b/gcc/rust/ast/rust-ast-dump.h @@ -184,8 +184,6 @@ private: void visit (ForLoopExpr &expr); void visit (IfExpr &expr); void visit (IfExprConseqElse &expr); - void visit (IfExprConseqIf &expr); - void visit (IfExprConseqIfLet &expr); void visit (IfLetExpr &expr); void visit (IfLetExprConseqElse &expr); void visit (IfLetExprConseqIf &expr); diff --git a/gcc/rust/ast/rust-ast-full-decls.h b/gcc/rust/ast/rust-ast-full-decls.h index b3f71c0addb7..94691f980a6d 100644 --- a/gcc/rust/ast/rust-ast-full-decls.h +++ b/gcc/rust/ast/rust-ast-full-decls.h @@ -135,9 +135,7 @@ class WhileLetLoopExpr; class ForLoopExpr; class IfExpr; class IfExprConseqElse; -class IfExprConseqIf; class IfLetExpr; -class IfExprConseqIfLet; class IfLetExprConseqElse; class IfLetExprConseqIf; class IfLetExprConseqIfLet; diff --git a/gcc/rust/ast/rust-ast-tokenstream.cc b/gcc/rust/ast/rust-ast-tokenstream.cc index d4e23bfec706..8c54141fd789 100644 --- a/gcc/rust/ast/rust-ast-tokenstream.cc +++ b/gcc/rust/ast/rust-ast-tokenstream.cc @@ -1427,25 +1427,6 @@ TokenStream::visit (IfExprConseqElse &expr) visit (expr.get_else_block ()); } -void -TokenStream::visit (IfExprConseqIf &expr) -{ - visit (static_cast (expr)); - indentation (); - tokens.push_back (Rust::Token::make (ELSE, expr.get_locus ())); - // The "if" part of the "else if" is printed by the next visitor - visit (expr.get_conseq_if_expr ()); -} - -void -TokenStream::visit (IfExprConseqIfLet &expr) -{ - visit (static_cast (expr)); - indentation (); - tokens.push_back (Rust::Token::make (ELSE, expr.get_locus ())); - visit (expr.get_conseq_if_let_expr ()); -} - void TokenStream::visit (IfLetExpr &expr) { diff --git a/gcc/rust/ast/rust-ast-tokenstream.h b/gcc/rust/ast/rust-ast-tokenstream.h index 8ce25e10b93d..83fdece70528 100644 --- a/gcc/rust/ast/rust-ast-tokenstream.h +++ b/gcc/rust/ast/rust-ast-tokenstream.h @@ -198,8 +198,6 @@ private: void visit (ForLoopExpr &expr); void visit (IfExpr &expr); void visit (IfExprConseqElse &expr); - void visit (IfExprConseqIf &expr); - void visit (IfExprConseqIfLet &expr); void visit (IfLetExpr &expr); void visit (IfLetExprConseqElse &expr); void visit (IfLetExprConseqIf &expr); diff --git a/gcc/rust/ast/rust-ast-visitor.h b/gcc/rust/ast/rust-ast-visitor.h index 6990d6144864..621f09ef62b1 100644 --- a/gcc/rust/ast/rust-ast-visitor.h +++ b/gcc/rust/ast/rust-ast-visitor.h @@ -115,8 +115,6 @@ public: virtual void visit (ForLoopExpr &expr) = 0; virtual void visit (IfExpr &expr) = 0; virtual void visit (IfExprConseqElse &expr) = 0; - virtual void visit (IfExprConseqIf &expr) = 0; - virtual void visit (IfExprConseqIfLet &expr) = 0; virtual void visit (IfLetExpr &expr) = 0; virtual void visit (IfLetExprConseqElse &expr) = 0; virtual void visit (IfLetExprConseqIf &expr) = 0; diff --git a/gcc/rust/ast/rust-ast.cc b/gcc/rust/ast/rust-ast.cc index feb60ebbb109..dbbeda38a44a 100644 --- a/gcc/rust/ast/rust-ast.cc +++ b/gcc/rust/ast/rust-ast.cc @@ -1638,27 +1638,7 @@ IfExprConseqElse::as_string () const { std::string str = IfExpr::as_string (); - str += "\n Else block expr: " + else_block->as_string (); - - return str; -} - -std::string -IfExprConseqIf::as_string () const -{ - std::string str = IfExpr::as_string (); - - str += "\n Else if expr: \n " + conseq_if_expr->as_string (); - - return str; -} - -std::string -IfExprConseqIfLet::as_string () const -{ - std::string str = IfExpr::as_string (); - - str += "\n Else if let expr: \n " + if_let_expr->as_string (); + str += "\n Else expr: " + else_block->as_string (); return str; } @@ -4575,18 +4555,6 @@ IfExprConseqElse::accept_vis (ASTVisitor &vis) vis.visit (*this); } -void -IfExprConseqIf::accept_vis (ASTVisitor &vis) -{ - vis.visit (*this); -} - -void -IfExprConseqIfLet::accept_vis (ASTVisitor &vis) -{ - vis.visit (*this); -} - void IfLetExpr::accept_vis (ASTVisitor &vis) { diff --git a/gcc/rust/ast/rust-expr.h b/gcc/rust/ast/rust-expr.h index bcf5ab3b364c..f91d9e9ceb20 100644 --- a/gcc/rust/ast/rust-expr.h +++ b/gcc/rust/ast/rust-expr.h @@ -3753,14 +3753,14 @@ protected: // If expression with an ending "else" expression AST node (trailing) class IfExprConseqElse : public IfExpr { - std::unique_ptr else_block; + std::unique_ptr else_block; public: std::string as_string () const override; IfExprConseqElse (std::unique_ptr condition, std::unique_ptr if_block, - std::unique_ptr else_block, + std::unique_ptr else_block, std::vector outer_attrs, Location locus) : IfExpr (std::move (condition), std::move (if_block), std::move (outer_attrs), locus), @@ -3770,7 +3770,7 @@ public: // Copy constructor with clone IfExprConseqElse (IfExprConseqElse const &other) - : IfExpr (other), else_block (other.else_block->clone_block_expr ()) + : IfExpr (other), else_block (other.else_block->clone_expr_with_block ()) {} // Overloaded assignment operator with cloning @@ -3779,7 +3779,7 @@ public: IfExpr::operator= (other); // condition = other.condition->clone_expr(); // if_block = other.if_block->clone_block_expr(); - else_block = other.else_block->clone_block_expr (); + else_block = other.else_block->clone_expr_with_block (); return *this; } @@ -3793,7 +3793,7 @@ public: void vis_else_block (ASTVisitor &vis) { else_block->accept_vis (vis); } // TODO: is this better? Or is a "vis_block" better? - std::unique_ptr &get_else_block () + std::unique_ptr &get_else_block () { rust_assert (else_block != nullptr); return else_block; @@ -3808,67 +3808,6 @@ protected: } }; -// If expression with an ending "else if" expression AST node -class IfExprConseqIf : public IfExpr -{ - std::unique_ptr conseq_if_expr; - -public: - std::string as_string () const override; - - IfExprConseqIf (std::unique_ptr condition, - std::unique_ptr if_block, - std::unique_ptr conseq_if_expr, - std::vector outer_attrs, Location locus) - : IfExpr (std::move (condition), std::move (if_block), - std::move (outer_attrs), locus), - conseq_if_expr (std::move (conseq_if_expr)) - {} - // outer attributes not allowed - - // Copy constructor with clone - IfExprConseqIf (IfExprConseqIf const &other) - : IfExpr (other), conseq_if_expr (other.conseq_if_expr->clone_if_expr ()) - {} - - // Overloaded assignment operator to use clone - IfExprConseqIf &operator= (IfExprConseqIf const &other) - { - IfExpr::operator= (other); - // condition = other.condition->clone_expr(); - // if_block = other.if_block->clone_block_expr(); - conseq_if_expr = other.conseq_if_expr->clone_if_expr (); - - return *this; - } - - // move constructors - IfExprConseqIf (IfExprConseqIf &&other) = default; - IfExprConseqIf &operator= (IfExprConseqIf &&other) = default; - - void accept_vis (ASTVisitor &vis) override; - - void vis_conseq_if_expr (ASTVisitor &vis) - { - conseq_if_expr->accept_vis (vis); - } - - // TODO: is this better? Or is a "vis_block" better? - std::unique_ptr &get_conseq_if_expr () - { - rust_assert (conseq_if_expr != nullptr); - return conseq_if_expr; - } - -protected: - /* Use covariance to implement clone function as returning this object rather - * than base */ - IfExprConseqIf *clone_if_expr_impl () const override - { - return new IfExprConseqIf (*this); - } -}; - // Basic "if let" expression AST node with no else class IfLetExpr : public ExprWithBlock { @@ -4002,62 +3941,6 @@ protected: } }; -// If expression with an ending "else if let" expression AST node -class IfExprConseqIfLet : public IfExpr -{ - std::unique_ptr if_let_expr; - -public: - std::string as_string () const override; - - IfExprConseqIfLet (std::unique_ptr condition, - std::unique_ptr if_block, - std::unique_ptr conseq_if_let_expr, - std::vector outer_attrs, Location locus) - : IfExpr (std::move (condition), std::move (if_block), - std::move (outer_attrs), locus), - if_let_expr (std::move (conseq_if_let_expr)) - {} - // outer attributes not allowed - - // Copy constructor with clone - IfExprConseqIfLet (IfExprConseqIfLet const &other) - : IfExpr (other), if_let_expr (other.if_let_expr->clone_if_let_expr ()) - {} - - // Overloaded assignment operator to use clone - IfExprConseqIfLet &operator= (IfExprConseqIfLet const &other) - { - IfExpr::operator= (other); - // condition = other.condition->clone_expr(); - // if_block = other.if_block->clone_block_expr(); - if_let_expr = other.if_let_expr->clone_if_let_expr (); - - return *this; - } - - // move constructors - IfExprConseqIfLet (IfExprConseqIfLet &&other) = default; - IfExprConseqIfLet &operator= (IfExprConseqIfLet &&other) = default; - - void accept_vis (ASTVisitor &vis) override; - - // TODO: is this better? Or is a "vis_block" better? - std::unique_ptr &get_conseq_if_let_expr () - { - rust_assert (if_let_expr != nullptr); - return if_let_expr; - } - -protected: - /* Use covariance to implement clone function as returning this object rather - * than base */ - IfExprConseqIfLet *clone_if_expr_impl () const override - { - return new IfExprConseqIfLet (*this); - } -}; - /* AST node representing "if let" expression with an "else" expression at the * end */ class IfLetExprConseqElse : public IfLetExpr diff --git a/gcc/rust/checks/errors/rust-feature-gate.h b/gcc/rust/checks/errors/rust-feature-gate.h index af1deabca82b..a4e2f90f0cf1 100644 --- a/gcc/rust/checks/errors/rust-feature-gate.h +++ b/gcc/rust/checks/errors/rust-feature-gate.h @@ -95,8 +95,6 @@ public: void visit (AST::ForLoopExpr &expr) override {} void visit (AST::IfExpr &expr) override {} void visit (AST::IfExprConseqElse &expr) override {} - void visit (AST::IfExprConseqIf &expr) override {} - void visit (AST::IfExprConseqIfLet &expr) override {} void visit (AST::IfLetExpr &expr) override {} void visit (AST::IfLetExprConseqElse &expr) override {} void visit (AST::IfLetExprConseqIf &expr) override {} diff --git a/gcc/rust/expand/rust-cfg-strip.cc b/gcc/rust/expand/rust-cfg-strip.cc index 9ae5f5445b8c..926367aff0f2 100644 --- a/gcc/rust/expand/rust-cfg-strip.cc +++ b/gcc/rust/expand/rust-cfg-strip.cc @@ -1701,77 +1701,6 @@ CfgStrip::visit (AST::IfExprConseqElse &expr) "attributes not allowed"); } void -CfgStrip::visit (AST::IfExprConseqIf &expr) -{ - // initial strip test based on outer attrs - expand_cfg_attrs (expr.get_outer_attrs ()); - if (fails_cfg_with_expand (expr.get_outer_attrs ())) - { - expr.mark_for_strip (); - return; - } - - // can't strip condition expr itself, but can strip sub-expressions - auto &condition_expr = expr.get_condition_expr (); - condition_expr->accept_vis (*this); - if (condition_expr->is_marked_for_strip ()) - rust_error_at (condition_expr->get_locus (), - "cannot strip expression in this position - outer " - "attributes not allowed"); - - // can't strip if block itself, but can strip sub-expressions - auto &if_block = expr.get_if_block (); - if_block->accept_vis (*this); - if (if_block->is_marked_for_strip ()) - rust_error_at (if_block->get_locus (), - "cannot strip block expression in this position - outer " - "attributes not allowed"); - - // can't strip if expr itself, but can strip sub-expressions - auto &conseq_if_expr = expr.get_conseq_if_expr (); - conseq_if_expr->accept_vis (*this); - if (conseq_if_expr->is_marked_for_strip ()) - rust_error_at (conseq_if_expr->get_locus (), - "cannot strip consequent if expression in this " - "position - outer attributes not allowed"); -} -void -CfgStrip::visit (AST::IfExprConseqIfLet &expr) -{ - // initial strip test based on outer attrs - expand_cfg_attrs (expr.get_outer_attrs ()); - if (fails_cfg_with_expand (expr.get_outer_attrs ())) - { - expr.mark_for_strip (); - return; - } - - // can't strip condition expr itself, but can strip sub-expressions - auto &condition_expr = expr.get_condition_expr (); - condition_expr->accept_vis (*this); - if (condition_expr->is_marked_for_strip ()) - rust_error_at (condition_expr->get_locus (), - "cannot strip expression in this position - outer " - "attributes not allowed"); - - // can't strip if block itself, but can strip sub-expressions - auto &if_block = expr.get_if_block (); - if_block->accept_vis (*this); - if (if_block->is_marked_for_strip ()) - rust_error_at (if_block->get_locus (), - "cannot strip block expression in this position - outer " - "attributes not allowed"); - - // can't strip if let expr itself, but can strip sub-expressions - auto &conseq_if_let_expr = expr.get_conseq_if_let_expr (); - conseq_if_let_expr->accept_vis (*this); - if (conseq_if_let_expr->is_marked_for_strip ()) - rust_error_at (conseq_if_let_expr->get_locus (), - "cannot strip consequent if let expression in this " - "position - outer attributes not " - "allowed"); -} -void CfgStrip::visit (AST::IfLetExpr &expr) { // initial strip test based on outer attrs diff --git a/gcc/rust/expand/rust-cfg-strip.h b/gcc/rust/expand/rust-cfg-strip.h index c5d5a475f776..41b548b51c26 100644 --- a/gcc/rust/expand/rust-cfg-strip.h +++ b/gcc/rust/expand/rust-cfg-strip.h @@ -131,8 +131,6 @@ public: void visit (AST::ForLoopExpr &expr) override; void visit (AST::IfExpr &expr) override; void visit (AST::IfExprConseqElse &expr) override; - void visit (AST::IfExprConseqIf &expr) override; - void visit (AST::IfExprConseqIfLet &expr) override; void visit (AST::IfLetExpr &expr) override; void visit (AST::IfLetExprConseqElse &expr) override; void visit (AST::IfLetExprConseqIf &expr) override; diff --git a/gcc/rust/expand/rust-expand-visitor.cc b/gcc/rust/expand/rust-expand-visitor.cc index be6bb06b6a4e..04013da8fffc 100644 --- a/gcc/rust/expand/rust-expand-visitor.cc +++ b/gcc/rust/expand/rust-expand-visitor.cc @@ -681,24 +681,6 @@ ExpandVisitor::visit (AST::IfExprConseqElse &expr) visit (expr.get_else_block ()); } -void -ExpandVisitor::visit (AST::IfExprConseqIf &expr) -{ - maybe_expand_expr (expr.get_condition_expr ()); - - visit (expr.get_if_block ()); - visit (expr.get_conseq_if_expr ()); -} - -void -ExpandVisitor::visit (AST::IfExprConseqIfLet &expr) -{ - maybe_expand_expr (expr.get_condition_expr ()); - - visit (expr.get_if_block ()); - visit (expr.get_conseq_if_let_expr ()); -} - void ExpandVisitor::visit (AST::IfLetExpr &expr) { diff --git a/gcc/rust/expand/rust-expand-visitor.h b/gcc/rust/expand/rust-expand-visitor.h index c2b3e781808f..67c9a5558b6e 100644 --- a/gcc/rust/expand/rust-expand-visitor.h +++ b/gcc/rust/expand/rust-expand-visitor.h @@ -216,8 +216,6 @@ public: void visit (AST::ForLoopExpr &expr) override; void visit (AST::IfExpr &expr) override; void visit (AST::IfExprConseqElse &expr) override; - void visit (AST::IfExprConseqIf &expr) override; - void visit (AST::IfExprConseqIfLet &expr) override; void visit (AST::IfLetExpr &expr) override; void visit (AST::IfLetExprConseqElse &expr) override; void visit (AST::IfLetExprConseqIf &expr) override; diff --git a/gcc/rust/hir/rust-ast-lower-base.cc b/gcc/rust/hir/rust-ast-lower-base.cc index 475c541107fa..9c04c21881c3 100644 --- a/gcc/rust/hir/rust-ast-lower-base.cc +++ b/gcc/rust/hir/rust-ast-lower-base.cc @@ -230,12 +230,6 @@ void ASTLoweringBase::visit (AST::IfExprConseqElse &) {} void -ASTLoweringBase::visit (AST::IfExprConseqIf &) -{} -void -ASTLoweringBase::visit (AST::IfExprConseqIfLet &) -{} -void ASTLoweringBase::visit (AST::IfLetExpr &) {} void diff --git a/gcc/rust/hir/rust-ast-lower-base.h b/gcc/rust/hir/rust-ast-lower-base.h index 699db7252ff7..212277960a6b 100644 --- a/gcc/rust/hir/rust-ast-lower-base.h +++ b/gcc/rust/hir/rust-ast-lower-base.h @@ -143,8 +143,6 @@ public: virtual void visit (AST::ForLoopExpr &expr); virtual void visit (AST::IfExpr &expr); virtual void visit (AST::IfExprConseqElse &expr); - virtual void visit (AST::IfExprConseqIf &expr); - virtual void visit (AST::IfExprConseqIfLet &expr); virtual void visit (AST::IfLetExpr &expr); virtual void visit (AST::IfLetExprConseqElse &expr); virtual void visit (AST::IfLetExprConseqIf &expr); diff --git a/gcc/rust/hir/rust-ast-lower-block.h b/gcc/rust/hir/rust-ast-lower-block.h index 638298a7c7e8..a12fd87956c8 100644 --- a/gcc/rust/hir/rust-ast-lower-block.h +++ b/gcc/rust/hir/rust-ast-lower-block.h @@ -101,8 +101,6 @@ public: void visit (AST::IfExprConseqElse &expr) override; - void visit (AST::IfExprConseqIf &expr) override; - private: ASTLoweringIfBlock () : ASTLoweringBase (), translated (nullptr), terminated (false) @@ -169,11 +167,6 @@ public: translated = ASTLoweringIfBlock::translate (&expr, &terminated); } - void visit (AST::IfExprConseqIf &expr) override - { - translated = ASTLoweringIfBlock::translate (&expr, &terminated); - } - void visit (AST::IfLetExpr &expr) override { translated = ASTLoweringIfLetBlock::translate (&expr); diff --git a/gcc/rust/hir/rust-ast-lower-expr.cc b/gcc/rust/hir/rust-ast-lower-expr.cc index b98d743877e5..c65b08e68400 100644 --- a/gcc/rust/hir/rust-ast-lower-expr.cc +++ b/gcc/rust/hir/rust-ast-lower-expr.cc @@ -103,12 +103,6 @@ ASTLoweringExpr::visit (AST::IfExprConseqElse &expr) translated = ASTLoweringIfBlock::translate (&expr, &terminated); } -void -ASTLoweringExpr::visit (AST::IfExprConseqIf &expr) -{ - translated = ASTLoweringIfBlock::translate (&expr, &terminated); -} - void ASTLoweringExpr::visit (AST::BlockExpr &expr) { diff --git a/gcc/rust/hir/rust-ast-lower-expr.h b/gcc/rust/hir/rust-ast-lower-expr.h index a3c8787dd298..d3e95324145c 100644 --- a/gcc/rust/hir/rust-ast-lower-expr.h +++ b/gcc/rust/hir/rust-ast-lower-expr.h @@ -78,7 +78,6 @@ public: void visit (AST::TupleExpr &expr) override; void visit (AST::IfExpr &expr) override; void visit (AST::IfExprConseqElse &expr) override; - void visit (AST::IfExprConseqIf &expr) override; void visit (AST::BlockExpr &expr) override; void visit (AST::UnsafeBlockExpr &expr) override; void visit (AST::PathInExpression &expr) override; diff --git a/gcc/rust/hir/rust-ast-lower.cc b/gcc/rust/hir/rust-ast-lower.cc index 381b02979f53..c9d5d01a7b14 100644 --- a/gcc/rust/hir/rust-ast-lower.cc +++ b/gcc/rust/hir/rust-ast-lower.cc @@ -182,39 +182,12 @@ ASTLoweringIfBlock::visit (AST::IfExprConseqElse &expr) HIR::BlockExpr *if_block = ASTLoweringBlock::translate (expr.get_if_block ().get (), &if_block_terminated); - HIR::BlockExpr *else_block - = ASTLoweringBlock::translate (expr.get_else_block ().get (), - &else_block_termianted); + HIR::ExprWithBlock *else_block + = ASTLoweringExprWithBlock::translate (expr.get_else_block ().get (), + &else_block_termianted); terminated = if_block_terminated && else_block_termianted; - auto crate_num = mappings->get_current_crate (); - Analysis::NodeMapping mapping (crate_num, expr.get_node_id (), - mappings->get_next_hir_id (crate_num), - UNKNOWN_LOCAL_DEFID); - - translated - = new HIR::IfExprConseqElse (mapping, - std::unique_ptr (condition), - std::unique_ptr (if_block), - std::unique_ptr (else_block), - expr.get_locus ()); -} - -void -ASTLoweringIfBlock::visit (AST::IfExprConseqIf &expr) -{ - HIR::Expr *condition - = ASTLoweringExpr::translate (expr.get_condition_expr ().get ()); - - bool ignored_terminated = false; - HIR::BlockExpr *block - = ASTLoweringBlock::translate (expr.get_if_block ().get (), - &ignored_terminated); - HIR::IfExpr *conseq_if_expr - = ASTLoweringIfBlock::translate (expr.get_conseq_if_expr ().get (), - &ignored_terminated); - auto crate_num = mappings->get_current_crate (); Analysis::NodeMapping mapping (crate_num, expr.get_node_id (), mappings->get_next_hir_id (crate_num), @@ -222,8 +195,8 @@ ASTLoweringIfBlock::visit (AST::IfExprConseqIf &expr) translated = new HIR::IfExprConseqElse ( mapping, std::unique_ptr (condition), - std::unique_ptr (block), - std::unique_ptr (conseq_if_expr), expr.get_locus ()); + std::unique_ptr (if_block), + std::unique_ptr (else_block), expr.get_locus ()); } void diff --git a/gcc/rust/parse/rust-parse-impl.h b/gcc/rust/parse/rust-parse-impl.h index 95278fd2ea98..67c4f6a3fabd 100644 --- a/gcc/rust/parse/rust-parse-impl.h +++ b/gcc/rust/parse/rust-parse-impl.h @@ -8035,11 +8035,11 @@ Parser::parse_if_expr (AST::AttrVec outer_attrs, return nullptr; } - return std::unique_ptr ( - new AST::IfExprConseqIfLet (std::move (condition), - std::move (if_body), - std::move (if_let_expr), - std::move (outer_attrs), locus)); + return std::unique_ptr ( + new AST::IfExprConseqElse (std::move (condition), + std::move (if_body), + std::move (if_let_expr), + std::move (outer_attrs), locus)); } else { @@ -8056,11 +8056,11 @@ Parser::parse_if_expr (AST::AttrVec outer_attrs, return nullptr; } - return std::unique_ptr ( - new AST::IfExprConseqIf (std::move (condition), - std::move (if_body), - std::move (if_expr), - std::move (outer_attrs), locus)); + return std::unique_ptr ( + new AST::IfExprConseqElse (std::move (condition), + std::move (if_body), + std::move (if_expr), + std::move (outer_attrs), locus)); } } default: diff --git a/gcc/rust/resolve/rust-ast-resolve-base.cc b/gcc/rust/resolve/rust-ast-resolve-base.cc index cc09f0cc664f..06aeb06f967e 100644 --- a/gcc/rust/resolve/rust-ast-resolve-base.cc +++ b/gcc/rust/resolve/rust-ast-resolve-base.cc @@ -294,14 +294,6 @@ void ResolverBase::visit (AST::IfExprConseqElse &) {} -void -ResolverBase::visit (AST::IfExprConseqIf &) -{} - -void -ResolverBase::visit (AST::IfExprConseqIfLet &) -{} - void ResolverBase::visit (AST::IfLetExpr &) {} diff --git a/gcc/rust/resolve/rust-ast-resolve-base.h b/gcc/rust/resolve/rust-ast-resolve-base.h index 24103c9109fc..dc8796549c2a 100644 --- a/gcc/rust/resolve/rust-ast-resolve-base.h +++ b/gcc/rust/resolve/rust-ast-resolve-base.h @@ -95,8 +95,6 @@ public: void visit (AST::ForLoopExpr &); void visit (AST::IfExpr &); void visit (AST::IfExprConseqElse &); - void visit (AST::IfExprConseqIf &); - void visit (AST::IfExprConseqIfLet &); void visit (AST::IfLetExpr &); void visit (AST::IfLetExprConseqElse &); void visit (AST::IfLetExprConseqIf &); diff --git a/gcc/rust/resolve/rust-ast-resolve-expr.cc b/gcc/rust/resolve/rust-ast-resolve-expr.cc index a2708f53b290..339fd8a421b3 100644 --- a/gcc/rust/resolve/rust-ast-resolve-expr.cc +++ b/gcc/rust/resolve/rust-ast-resolve-expr.cc @@ -186,14 +186,6 @@ ResolveExpr::visit (AST::IfExprConseqElse &expr) ResolveExpr::go (expr.get_else_block ().get (), prefix, canonical_prefix); } -void -ResolveExpr::visit (AST::IfExprConseqIf &expr) -{ - ResolveExpr::go (expr.get_condition_expr ().get (), prefix, canonical_prefix); - ResolveExpr::go (expr.get_if_block ().get (), prefix, canonical_prefix); - ResolveExpr::go (expr.get_conseq_if_expr ().get (), prefix, canonical_prefix); -} - void ResolveExpr::visit (AST::IfLetExpr &expr) { diff --git a/gcc/rust/resolve/rust-ast-resolve-expr.h b/gcc/rust/resolve/rust-ast-resolve-expr.h index 68b8462d37bd..7b0beaf49dcd 100644 --- a/gcc/rust/resolve/rust-ast-resolve-expr.h +++ b/gcc/rust/resolve/rust-ast-resolve-expr.h @@ -50,7 +50,6 @@ public: void visit (AST::TypeCastExpr &expr) override; void visit (AST::IfExpr &expr) override; void visit (AST::IfExprConseqElse &expr) override; - void visit (AST::IfExprConseqIf &expr) override; void visit (AST::IfLetExpr &expr) override; void visit (AST::BlockExpr &expr) override; void visit (AST::UnsafeBlockExpr &expr) override; diff --git a/gcc/rust/resolve/rust-early-name-resolver.cc b/gcc/rust/resolve/rust-early-name-resolver.cc index 1dfbff56c2f9..f06f1bc81985 100644 --- a/gcc/rust/resolve/rust-early-name-resolver.cc +++ b/gcc/rust/resolve/rust-early-name-resolver.cc @@ -456,22 +456,6 @@ EarlyNameResolver::visit (AST::IfExprConseqElse &expr) expr.get_else_block ()->accept_vis (*this); } -void -EarlyNameResolver::visit (AST::IfExprConseqIf &expr) -{ - expr.get_condition_expr ()->accept_vis (*this); - expr.get_if_block ()->accept_vis (*this); - expr.get_conseq_if_expr ()->accept_vis (*this); -} - -void -EarlyNameResolver::visit (AST::IfExprConseqIfLet &expr) -{ - expr.get_condition_expr ()->accept_vis (*this); - expr.get_if_block ()->accept_vis (*this); - expr.get_conseq_if_let_expr ()->accept_vis (*this); -} - void EarlyNameResolver::visit (AST::IfLetExpr &expr) { diff --git a/gcc/rust/resolve/rust-early-name-resolver.h b/gcc/rust/resolve/rust-early-name-resolver.h index 39287ec0f26e..c6f800490d7c 100644 --- a/gcc/rust/resolve/rust-early-name-resolver.h +++ b/gcc/rust/resolve/rust-early-name-resolver.h @@ -177,8 +177,6 @@ private: virtual void visit (AST::ForLoopExpr &expr); virtual void visit (AST::IfExpr &expr); virtual void visit (AST::IfExprConseqElse &expr); - virtual void visit (AST::IfExprConseqIf &expr); - virtual void visit (AST::IfExprConseqIfLet &expr); virtual void visit (AST::IfLetExpr &expr); virtual void visit (AST::IfLetExprConseqElse &expr); virtual void visit (AST::IfLetExprConseqIf &expr); diff --git a/gcc/rust/util/rust-attributes.cc b/gcc/rust/util/rust-attributes.cc index 372762d5fa6f..4281f2986449 100644 --- a/gcc/rust/util/rust-attributes.cc +++ b/gcc/rust/util/rust-attributes.cc @@ -468,14 +468,6 @@ void AttributeChecker::visit (AST::IfExprConseqElse &) {} -void -AttributeChecker::visit (AST::IfExprConseqIf &) -{} - -void -AttributeChecker::visit (AST::IfExprConseqIfLet &) -{} - void AttributeChecker::visit (AST::IfLetExpr &) {} diff --git a/gcc/rust/util/rust-attributes.h b/gcc/rust/util/rust-attributes.h index bef6127ee101..1c642cdbac92 100644 --- a/gcc/rust/util/rust-attributes.h +++ b/gcc/rust/util/rust-attributes.h @@ -160,8 +160,6 @@ private: void visit (AST::ForLoopExpr &expr); void visit (AST::IfExpr &expr); void visit (AST::IfExprConseqElse &expr); - void visit (AST::IfExprConseqIf &expr); - void visit (AST::IfExprConseqIfLet &expr); void visit (AST::IfLetExpr &expr); void visit (AST::IfLetExprConseqElse &expr); void visit (AST::IfLetExprConseqIf &expr);