diff options
author | Owen Avery <powerboat9.gamer@gmail.com> | 2023-03-15 23:05:07 -0400 |
---|---|---|
committer | Arthur Cohen <arthur.cohen@embecosm.com> | 2024-01-16 18:28:46 +0100 |
commit | d88234af9ffa2f51e498dc518ccab8b1c293a148 (patch) | |
tree | 30eb657d2ad209077f4317b305d5c5b26f9720dd /gcc/rust/hir | |
parent | 5444ed27a8139d5d584859321a88cadaafdb1cb0 (diff) | |
download | gcc-d88234af9ffa2f51e498dc518ccab8b1c293a148.zip gcc-d88234af9ffa2f51e498dc518ccab8b1c293a148.tar.gz gcc-d88234af9ffa2f51e498dc518ccab8b1c293a148.tar.bz2 |
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 <powerboat9.gamer@gmail.com>
Diffstat (limited to 'gcc/rust/hir')
-rw-r--r-- | gcc/rust/hir/rust-ast-lower-base.cc | 6 | ||||
-rw-r--r-- | gcc/rust/hir/rust-ast-lower-base.h | 2 | ||||
-rw-r--r-- | gcc/rust/hir/rust-ast-lower-block.h | 7 | ||||
-rw-r--r-- | gcc/rust/hir/rust-ast-lower-expr.cc | 6 | ||||
-rw-r--r-- | gcc/rust/hir/rust-ast-lower-expr.h | 1 | ||||
-rw-r--r-- | gcc/rust/hir/rust-ast-lower.cc | 37 |
6 files changed, 5 insertions, 54 deletions
diff --git a/gcc/rust/hir/rust-ast-lower-base.cc b/gcc/rust/hir/rust-ast-lower-base.cc index 475c541..9c04c21 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 699db72..2122779 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 638298a..a12fd87 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 b98d743..c65b08e 100644 --- a/gcc/rust/hir/rust-ast-lower-expr.cc +++ b/gcc/rust/hir/rust-ast-lower-expr.cc @@ -104,12 +104,6 @@ ASTLoweringExpr::visit (AST::IfExprConseqElse &expr) } void -ASTLoweringExpr::visit (AST::IfExprConseqIf &expr) -{ - translated = ASTLoweringIfBlock::translate (&expr, &terminated); -} - -void ASTLoweringExpr::visit (AST::BlockExpr &expr) { translated = ASTLoweringBlock::translate (&expr, &terminated); diff --git a/gcc/rust/hir/rust-ast-lower-expr.h b/gcc/rust/hir/rust-ast-lower-expr.h index a3c8787..d3e9532414 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 381b0297..c9d5d01 100644 --- a/gcc/rust/hir/rust-ast-lower.cc +++ b/gcc/rust/hir/rust-ast-lower.cc @@ -182,9 +182,9 @@ 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; @@ -193,37 +193,10 @@ ASTLoweringIfBlock::visit (AST::IfExprConseqElse &expr) mappings->get_next_hir_id (crate_num), UNKNOWN_LOCAL_DEFID); - translated - = new HIR::IfExprConseqElse (mapping, - std::unique_ptr<HIR::Expr> (condition), - std::unique_ptr<HIR::BlockExpr> (if_block), - std::unique_ptr<HIR::BlockExpr> (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), - UNKNOWN_LOCAL_DEFID); - translated = new HIR::IfExprConseqElse ( mapping, std::unique_ptr<HIR::Expr> (condition), - std::unique_ptr<HIR::BlockExpr> (block), - std::unique_ptr<HIR::ExprWithBlock> (conseq_if_expr), expr.get_locus ()); + std::unique_ptr<HIR::BlockExpr> (if_block), + std::unique_ptr<HIR::ExprWithBlock> (else_block), expr.get_locus ()); } void |