]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
gccrs: Remove HIR::ForLoopExpr
authorPhilip Herron <herron.philip@googlemail.com>
Sun, 17 Sep 2023 14:08:42 +0000 (15:08 +0100)
committerArthur Cohen <arthur.cohen@embecosm.com>
Tue, 16 Jan 2024 18:04:37 +0000 (19:04 +0100)
This will end up getting desugared into a LoopExpr with a MatchExpr body.

gcc/rust/ChangeLog:

* backend/rust-compile-block.h: remove HIR::ForLoopExpr
* backend/rust-compile-expr.h: likewise
* checks/errors/privacy/rust-privacy-reporter.cc (PrivacyReporter::visit): likewise
* checks/errors/privacy/rust-privacy-reporter.h: likewise
* checks/errors/rust-const-checker.cc (ConstChecker::visit): likewise
* checks/errors/rust-const-checker.h: likewise
* checks/errors/rust-unsafe-checker.cc (UnsafeChecker::visit): likewise
* checks/errors/rust-unsafe-checker.h: likewise
* checks/lints/rust-lint-marklive.h: likewise
* hir/rust-ast-lower.cc (ASTLoweringExprWithBlock::visit): likewise
* hir/rust-hir-dump.cc (Dump::visit): likewise
* hir/rust-hir-dump.h: likewise
* hir/tree/rust-hir-expr.h (class ForLoopExpr): likewise
* hir/tree/rust-hir-full-decls.h (class ForLoopExpr): likewise
* hir/tree/rust-hir-visitor.h: likewise
* hir/tree/rust-hir.cc (ForLoopExpr::as_string): likewise
(ForLoopExpr::accept_vis): likewise
* typecheck/rust-hir-type-check-expr.h: likewise

Signed-off-by: Philip Herron <herron.philip@googlemail.com>
17 files changed:
gcc/rust/backend/rust-compile-block.h
gcc/rust/backend/rust-compile-expr.h
gcc/rust/checks/errors/privacy/rust-privacy-reporter.cc
gcc/rust/checks/errors/privacy/rust-privacy-reporter.h
gcc/rust/checks/errors/rust-const-checker.cc
gcc/rust/checks/errors/rust-const-checker.h
gcc/rust/checks/errors/rust-unsafe-checker.cc
gcc/rust/checks/errors/rust-unsafe-checker.h
gcc/rust/checks/lints/rust-lint-marklive.h
gcc/rust/hir/rust-ast-lower.cc
gcc/rust/hir/rust-hir-dump.cc
gcc/rust/hir/rust-hir-dump.h
gcc/rust/hir/tree/rust-hir-expr.h
gcc/rust/hir/tree/rust-hir-full-decls.h
gcc/rust/hir/tree/rust-hir-visitor.h
gcc/rust/hir/tree/rust-hir.cc
gcc/rust/typecheck/rust-hir-type-check-expr.h

index 9135c63a7af5d9d877b881ee3f49f74dbcd3d59c..52cf0572e6ccec243ce167c18d30dcf794eca24a 100644 (file)
@@ -96,7 +96,6 @@ public:
   void visit (HIR::LoopExpr &) override {}
   void visit (HIR::WhileLoopExpr &) override {}
   void visit (HIR::WhileLetLoopExpr &) override {}
-  void visit (HIR::ForLoopExpr &) override {}
   void visit (HIR::IfLetExpr &) override {}
   void visit (HIR::IfLetExprConseqElse &) override {}
   void visit (HIR::MatchExpr &) override {}
@@ -180,7 +179,6 @@ public:
   void visit (HIR::LoopExpr &) override {}
   void visit (HIR::WhileLoopExpr &) override {}
   void visit (HIR::WhileLetLoopExpr &) override {}
-  void visit (HIR::ForLoopExpr &) override {}
   void visit (HIR::IfLetExpr &) override {}
   void visit (HIR::IfLetExprConseqElse &) override {}
   void visit (HIR::MatchExpr &) override {}
index a6db70ea69b63d70fce4080e456314d47fb3d75e..e947825c2a953445645c5e464e0abcc65a7015d8 100644 (file)
@@ -72,7 +72,6 @@ public:
   // TODO
   void visit (HIR::ErrorPropagationExpr &) override {}
   void visit (HIR::RangeToInclExpr &) override {}
-  void visit (HIR::ForLoopExpr &) override {}
 
   // TODO
   // these need to be sugared in the HIR to if statements and a match
index b37753211180d8a05c74bab45b23f2aecfd41e53..a6b4477f39a9825355579d919e8a738bf6d31d83 100644 (file)
@@ -579,13 +579,6 @@ PrivacyReporter::visit (HIR::WhileLetLoopExpr &expr)
   expr.get_loop_block ()->accept_vis (*this);
 }
 
-void
-PrivacyReporter::visit (HIR::ForLoopExpr &expr)
-{
-  expr.get_iterator_expr ()->accept_vis (*this);
-  expr.get_loop_block ()->accept_vis (*this);
-}
-
 void
 PrivacyReporter::visit (HIR::IfExpr &expr)
 {
index b8fb7cffb45ba8f9927ac75d96bcdc77db81ad07..d54732f5e38c911fb6c69619df2de7e3a3e33492 100644 (file)
@@ -119,7 +119,6 @@ types
   virtual void visit (HIR::LoopExpr &expr);
   virtual void visit (HIR::WhileLoopExpr &expr);
   virtual void visit (HIR::WhileLetLoopExpr &expr);
-  virtual void visit (HIR::ForLoopExpr &expr);
   virtual void visit (HIR::IfExpr &expr);
   virtual void visit (HIR::IfExprConseqElse &expr);
   virtual void visit (HIR::IfLetExpr &expr);
index 03b8f6a7c205b6daae1e0753a7aa24914d34fb56..cee5c75ff955013d389acd9a0f1318114a3f3439 100644 (file)
@@ -477,13 +477,6 @@ ConstChecker::visit (WhileLetLoopExpr &expr)
   expr.get_loop_block ()->accept_vis (*this);
 }
 
-void
-ConstChecker::visit (ForLoopExpr &expr)
-{
-  expr.get_iterator_expr ()->accept_vis (*this);
-  expr.get_loop_block ()->accept_vis (*this);
-}
-
 void
 ConstChecker::visit (IfExpr &expr)
 {
index c199cb353046bfab0cd51c727678f188cdeae165..a645da8b7c0d086ea228e0f933ed418498a27db6 100644 (file)
@@ -126,7 +126,6 @@ private:
   virtual void visit (LoopExpr &expr) override;
   virtual void visit (WhileLoopExpr &expr) override;
   virtual void visit (WhileLetLoopExpr &expr) override;
-  virtual void visit (ForLoopExpr &expr) override;
   virtual void visit (IfExpr &expr) override;
   virtual void visit (IfExprConseqElse &expr) override;
   virtual void visit (IfLetExpr &expr) override;
index 93ec6cf6edf3dbfb3b1f6cca702759cfa976c937..2d106e3da1bbf7ba4072c40ac7f9556c662ceba5 100644 (file)
@@ -581,13 +581,6 @@ UnsafeChecker::visit (WhileLetLoopExpr &expr)
   expr.get_loop_block ()->accept_vis (*this);
 }
 
-void
-UnsafeChecker::visit (ForLoopExpr &expr)
-{
-  expr.get_iterator_expr ()->accept_vis (*this);
-  expr.get_loop_block ()->accept_vis (*this);
-}
-
 void
 UnsafeChecker::visit (IfExpr &expr)
 {
index 2d5b484824b04cbbac5aa8e79e8856cb486b176c..fee4d62fe43e04c33fc9111fe738c086fb6bdbbb 100644 (file)
@@ -108,7 +108,6 @@ private:
   virtual void visit (LoopExpr &expr) override;
   virtual void visit (WhileLoopExpr &expr) override;
   virtual void visit (WhileLetLoopExpr &expr) override;
-  virtual void visit (ForLoopExpr &expr) override;
   virtual void visit (IfExpr &expr) override;
   virtual void visit (IfExprConseqElse &expr) override;
   virtual void visit (IfLetExpr &expr) override;
index 4d308471681fc27392d1f1e77910fc9f283d3f3f..67822dd553de3d335312c794db1c4833c9dab86f 100644 (file)
@@ -150,12 +150,6 @@ public:
     expr.get_cond ()->accept_vis (*this);
   }
 
-  void visit (HIR::ForLoopExpr &expr) override
-  {
-    expr.get_loop_block ()->accept_vis (*this);
-    expr.get_iterator_expr ()->accept_vis (*this);
-  }
-
   void visit (HIR::ExprStmt &stmt) override
   {
     stmt.get_expr ()->accept_vis (*this);
index cf5b75a12bdfc8f83cc931d927fc37ca6512c809..308a2ec83a4165eeaaa9abcc4924c8e278b745d7 100644 (file)
@@ -336,27 +336,24 @@ ASTLoweringExprWithBlock::visit (AST::WhileLoopExpr &expr)
 void
 ASTLoweringExprWithBlock::visit (AST::ForLoopExpr &expr)
 {
-  HIR::BlockExpr *loop_block
-    = ASTLoweringBlock::translate (expr.get_loop_block ().get (), &terminated);
-  HIR::LoopLabel loop_label = lower_loop_label (expr.get_loop_label ());
-  HIR::Expr *iterator_expr
-    = ASTLoweringExpr::translate (expr.get_iterator_expr ().get (),
-                                 &terminated);
-  HIR::Pattern *loop_pattern
-    = ASTLoweringPattern::translate (expr.get_pattern ().get ());
-
-  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::ForLoopExpr (mapping,
-                           std::unique_ptr<HIR::Pattern> (loop_pattern),
-                           std::unique_ptr<HIR::Expr> (iterator_expr),
-                           std::unique_ptr<HIR::BlockExpr> (loop_block),
-                           expr.get_locus (), std::move (loop_label),
-                           expr.get_outer_attrs ());
+  // TODO FIXME
+
+  // HIR::BlockExpr *loop_block
+  //   = ASTLoweringBlock::translate (expr.get_loop_block ().get (),
+  //   &terminated);
+  // HIR::LoopLabel loop_label = lower_loop_label (expr.get_loop_label ());
+  // HIR::Expr *iterator_expr
+  //   = ASTLoweringExpr::translate (expr.get_iterator_expr ().get (),
+  //                             &terminated);
+  // HIR::Pattern *loop_pattern
+  //   = ASTLoweringPattern::translate (expr.get_pattern ().get ());
+
+  // 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);
+
+  gcc_unreachable ();
 }
 
 void
index 8078ed14f3bafc0ea3d881ebf1e559aa56f2ec6b..417e11721391f25efe6b2d5a61b4c65b030a3773 100644 (file)
@@ -1384,19 +1384,6 @@ Dump::visit (WhileLetLoopExpr &e)
   end ("WhileLetLoopExpr");
 }
 
-void
-Dump::visit (ForLoopExpr &e)
-{
-  begin ("ForLoopExpr");
-  do_baseloopexpr (e);
-
-  visit_field ("pattern", e.get_pattern ());
-
-  visit_field ("iterator_expr", *e.get_iterator_expr ());
-
-  end ("ForLoopExpr");
-}
-
 void
 Dump::visit (IfExpr &e)
 {
index 660841fa02d3a4bc6c43ec5019ee2d164e385211..79aa7806f817c401868ee5518832386bea5b7873 100644 (file)
@@ -156,7 +156,6 @@ private:
   virtual void visit (LoopExpr &) override;
   virtual void visit (WhileLoopExpr &) override;
   virtual void visit (WhileLetLoopExpr &) override;
-  virtual void visit (ForLoopExpr &) override;
   virtual void visit (IfExpr &) override;
   virtual void visit (IfExprConseqElse &) override;
   virtual void visit (IfLetExpr &) override;
index f0e9a36282e43754743b557284fb62ff5b540286..3bfadbf2dc012393e1ddccd4d8692714009bfd3e 100644 (file)
@@ -3092,73 +3092,6 @@ protected:
   }
 };
 
-// For loop expression HIR node (iterator loop)
-class ForLoopExpr : public BaseLoopExpr
-{
-  std::unique_ptr<Pattern> pattern;
-  std::unique_ptr<Expr> iterator_expr;
-
-public:
-  std::string as_string () const override;
-
-  // Constructor with loop label
-  ForLoopExpr (Analysis::NodeMapping mappings,
-              std::unique_ptr<Pattern> loop_pattern,
-              std::unique_ptr<Expr> iterator_expr,
-              std::unique_ptr<BlockExpr> loop_body, location_t locus,
-              LoopLabel loop_label,
-              AST::AttrVec outer_attribs = AST::AttrVec ())
-    : BaseLoopExpr (std::move (mappings), std::move (loop_body), locus,
-                   std::move (loop_label), std::move (outer_attribs)),
-      pattern (std::move (loop_pattern)),
-      iterator_expr (std::move (iterator_expr))
-  {}
-
-  // Copy constructor with clone
-  ForLoopExpr (ForLoopExpr const &other)
-    : BaseLoopExpr (other), pattern (other.pattern->clone_pattern ()),
-      iterator_expr (other.iterator_expr->clone_expr ())
-  {}
-
-  // Overloaded assignment operator to clone
-  ForLoopExpr &operator= (ForLoopExpr const &other)
-  {
-    BaseLoopExpr::operator= (other);
-    pattern = other.pattern->clone_pattern ();
-    iterator_expr = other.iterator_expr->clone_expr ();
-    /*loop_block = other.loop_block->clone_block_expr();
-    loop_label = other.loop_label;
-    outer_attrs = other.outer_attrs;*/
-
-    return *this;
-  }
-
-  // move constructors
-  ForLoopExpr (ForLoopExpr &&other) = default;
-  ForLoopExpr &operator= (ForLoopExpr &&other) = default;
-
-  void accept_vis (HIRFullVisitor &vis) override;
-  void accept_vis (HIRExpressionVisitor &vis) override;
-
-  std::unique_ptr<Expr> &get_iterator_expr () { return iterator_expr; }
-  std::unique_ptr<Pattern> &get_pattern () { return pattern; };
-
-protected:
-  /* Use covariance to implement clone function as returning this object rather
-   * than base */
-  ForLoopExpr *clone_expr_impl () const override
-  {
-    return new ForLoopExpr (*this);
-  }
-
-  /* Use covariance to implement clone function as returning this object rather
-   * than base */
-  ForLoopExpr *clone_expr_with_block_impl () const override
-  {
-    return new ForLoopExpr (*this);
-  }
-};
-
 // forward decl for IfExpr
 class IfLetExpr;
 
index a260e7fa446dc6904eff7aaa606154ed2176492f..96293ce8314270ea03645c4d159cee412b7cac43 100644 (file)
@@ -111,7 +111,6 @@ class BaseLoopExpr;
 class LoopExpr;
 class WhileLoopExpr;
 class WhileLetLoopExpr;
-class ForLoopExpr;
 class IfExpr;
 class IfExprConseqElse;
 class IfLetExpr;
index 38c74f675eb0b5b1b449e3b2241631684f503cb6..4e7a97bd972fab6fedd046421ab4ff6e43818474 100644 (file)
@@ -78,7 +78,6 @@ public:
   virtual void visit (LoopExpr &expr) = 0;
   virtual void visit (WhileLoopExpr &expr) = 0;
   virtual void visit (WhileLetLoopExpr &expr) = 0;
-  virtual void visit (ForLoopExpr &expr) = 0;
   virtual void visit (IfExpr &expr) = 0;
   virtual void visit (IfExprConseqElse &expr) = 0;
   virtual void visit (IfLetExpr &expr) = 0;
@@ -215,7 +214,6 @@ public:
   virtual void visit (LoopExpr &) override {}
   virtual void visit (WhileLoopExpr &) override {}
   virtual void visit (WhileLetLoopExpr &) override {}
-  virtual void visit (ForLoopExpr &) override {}
   virtual void visit (IfExpr &) override {}
   virtual void visit (IfExprConseqElse &) override {}
   virtual void visit (IfLetExpr &) override {}
@@ -442,7 +440,6 @@ public:
   virtual void visit (LoopExpr &expr) = 0;
   virtual void visit (WhileLoopExpr &expr) = 0;
   virtual void visit (WhileLetLoopExpr &expr) = 0;
-  virtual void visit (ForLoopExpr &expr) = 0;
   virtual void visit (IfExpr &expr) = 0;
   virtual void visit (IfExprConseqElse &expr) = 0;
   virtual void visit (IfLetExpr &expr) = 0;
index ac1ae63bf960e2c598c679b19eb43280cc923960..a3d6e1ee27638d9c12dd14cd10140ada3a5a07e6 100644 (file)
@@ -2289,30 +2289,6 @@ GenericArgsBinding::as_string () const
   return identifier.as_string () + " = " + type->as_string ();
 }
 
-std::string
-ForLoopExpr::as_string () const
-{
-  std::string str ("ForLoopExpr: ");
-
-  str += "\n Label: ";
-  if (!has_loop_label ())
-    {
-      str += "none";
-    }
-  else
-    {
-      str += loop_label.as_string ();
-    }
-
-  str += "\n Pattern: " + pattern->as_string ();
-
-  str += "\n Iterator expr: " + iterator_expr->as_string ();
-
-  str += "\n Loop block: " + loop_block->as_string ();
-
-  return str;
-}
-
 std::string
 RangePattern::as_string () const
 {
@@ -4092,12 +4068,6 @@ WhileLetLoopExpr::accept_vis (HIRFullVisitor &vis)
   vis.visit (*this);
 }
 
-void
-ForLoopExpr::accept_vis (HIRFullVisitor &vis)
-{
-  vis.visit (*this);
-}
-
 void
 IfExpr::accept_vis (HIRFullVisitor &vis)
 {
@@ -4782,12 +4752,6 @@ RangePattern::accept_vis (HIRPatternVisitor &vis)
   vis.visit (*this);
 }
 
-void
-ForLoopExpr::accept_vis (HIRExpressionVisitor &vis)
-{
-  vis.visit (*this);
-}
-
 void
 TypePath::accept_vis (HIRTypeVisitor &vis)
 {
index e9890da60c50f445d720fd316479f74137d0aa82..c9df24e2dbe48020a79067e915b09b6d90809ae7 100644 (file)
@@ -76,7 +76,8 @@ public:
   void visit (HIR::ErrorPropagationExpr &) override {}
   void visit (HIR::RangeToInclExpr &) override {}
   void visit (HIR::WhileLetLoopExpr &) override {}
-  void visit (HIR::ForLoopExpr &) override {}
+
+  // lets not worry about async yet....
   void visit (HIR::AwaitExpr &) override {}
   void visit (HIR::AsyncBlockExpr &) override {}