From: Arthur Cohen <arthur.co...@embecosm.com>

gcc/rust/ChangeLog:

        * hir/rust-ast-lower-base.cc: Add rust_unreachable() when lowering 
desugared exprs.
        * hir/rust-ast-lower-base.h: Mention this.
        * hir/rust-ast-lower-block.h: Remove existing definitions.
        * hir/rust-ast-lower-expr.cc: Likewise.
        * hir/rust-ast-lower-expr.h: Likewise.
        * hir/rust-ast-lower.cc: Likewise.
---
 gcc/rust/hir/rust-ast-lower-base.cc | 30 ++++++++++++++++++++---------
 gcc/rust/hir/rust-ast-lower-base.h  |  6 +++---
 gcc/rust/hir/rust-ast-lower-block.h |  2 --
 gcc/rust/hir/rust-ast-lower-expr.cc |  6 ------
 gcc/rust/hir/rust-ast-lower-expr.h  |  2 +-
 gcc/rust/hir/rust-ast-lower.cc      |  6 ------
 6 files changed, 25 insertions(+), 27 deletions(-)

diff --git a/gcc/rust/hir/rust-ast-lower-base.cc 
b/gcc/rust/hir/rust-ast-lower-base.cc
index 8e8f3b649d0..9098a9fc6cf 100644
--- a/gcc/rust/hir/rust-ast-lower-base.cc
+++ b/gcc/rust/hir/rust-ast-lower-base.cc
@@ -46,6 +46,27 @@ ASTLoweringBase::visit (AST::ErrorPropagationExpr &expr)
   rust_unreachable ();
 }
 
+void
+ASTLoweringBase::visit (AST::TryExpr &expr)
+{
+  rust_fatal_error (expr.get_locus (), "missing desugar for try-blocks");
+  rust_unreachable ();
+}
+
+void
+ASTLoweringBase::visit (AST::ForLoopExpr &expr)
+{
+  rust_fatal_error (expr.get_locus (), "missing desugar for for-loops");
+  rust_unreachable ();
+}
+
+void
+ASTLoweringBase::visit (AST::WhileLetLoopExpr &expr)
+{
+  rust_fatal_error (expr.get_locus (), "missing desugar for while-let loops");
+  rust_unreachable ();
+}
+
 void
 ASTLoweringBase::visit (AST::Token &)
 {}
@@ -242,9 +263,6 @@ void
 ASTLoweringBase::visit (AST::ReturnExpr &)
 {}
 void
-ASTLoweringBase::visit (AST::TryExpr &)
-{}
-void
 ASTLoweringBase::visit (AST::UnsafeBlockExpr &)
 {}
 void
@@ -254,12 +272,6 @@ void
 ASTLoweringBase::visit (AST::WhileLoopExpr &)
 {}
 void
-ASTLoweringBase::visit (AST::WhileLetLoopExpr &)
-{}
-void
-ASTLoweringBase::visit (AST::ForLoopExpr &)
-{}
-void
 ASTLoweringBase::visit (AST::IfExpr &)
 {}
 void
diff --git a/gcc/rust/hir/rust-ast-lower-base.h 
b/gcc/rust/hir/rust-ast-lower-base.h
index d9428d61be9..6437b2e9dbb 100644
--- a/gcc/rust/hir/rust-ast-lower-base.h
+++ b/gcc/rust/hir/rust-ast-lower-base.h
@@ -65,6 +65,9 @@ public:
   // Special casing nodes that should never reach the HIR lowering stage
   virtual void visit (AST::MacroInvocation &) override final;
   virtual void visit (AST::ErrorPropagationExpr &) override final;
+  virtual void visit (AST::ForLoopExpr &) override final;
+  virtual void visit (AST::TryExpr &) override final;
+  virtual void visit (AST::WhileLetLoopExpr &) override final;
 
   // visitor impl
   // rust-ast.h
@@ -146,12 +149,9 @@ public:
   virtual void visit (AST::RangeToInclExpr &expr) override;
   virtual void visit (AST::BoxExpr &expr) override;
   virtual void visit (AST::ReturnExpr &expr) override;
-  virtual void visit (AST::TryExpr &expr) override;
   virtual void visit (AST::UnsafeBlockExpr &expr) override;
   virtual void visit (AST::LoopExpr &expr) override;
   virtual void visit (AST::WhileLoopExpr &expr) override;
-  virtual void visit (AST::WhileLetLoopExpr &expr) override;
-  virtual void visit (AST::ForLoopExpr &expr) override;
   virtual void visit (AST::IfExpr &expr) override;
   virtual void visit (AST::IfExprConseqElse &expr) override;
   virtual void visit (AST::IfLetExpr &expr) override;
diff --git a/gcc/rust/hir/rust-ast-lower-block.h 
b/gcc/rust/hir/rust-ast-lower-block.h
index 93cd443fd56..f10039bd0d9 100644
--- a/gcc/rust/hir/rust-ast-lower-block.h
+++ b/gcc/rust/hir/rust-ast-lower-block.h
@@ -213,8 +213,6 @@ public:
 
   void visit (AST::WhileLoopExpr &expr) override;
 
-  void visit (AST::ForLoopExpr &expr) override;
-
   void visit (AST::MatchExpr &expr) override;
 
 private:
diff --git a/gcc/rust/hir/rust-ast-lower-expr.cc 
b/gcc/rust/hir/rust-ast-lower-expr.cc
index e9c9acc06c8..4ed51d9f392 100644
--- a/gcc/rust/hir/rust-ast-lower-expr.cc
+++ b/gcc/rust/hir/rust-ast-lower-expr.cc
@@ -634,12 +634,6 @@ ASTLoweringExpr::visit (AST::WhileLoopExpr &expr)
   translated = ASTLoweringExprWithBlock::translate (expr, &terminated);
 }
 
-void
-ASTLoweringExpr::visit (AST::ForLoopExpr &expr)
-{
-  rust_unreachable ();
-}
-
 void
 ASTLoweringExpr::visit (AST::BreakExpr &expr)
 {
diff --git a/gcc/rust/hir/rust-ast-lower-expr.h 
b/gcc/rust/hir/rust-ast-lower-expr.h
index eb822c9f4de..4eed4ec452b 100644
--- a/gcc/rust/hir/rust-ast-lower-expr.h
+++ b/gcc/rust/hir/rust-ast-lower-expr.h
@@ -21,6 +21,7 @@
 
 #include "rust-ast-lower-base.h"
 #include "rust-ast.h"
+#include "rust-expr.h"
 
 namespace Rust {
 namespace HIR {
@@ -110,7 +111,6 @@ public:
   void visit (AST::FieldAccessExpr &expr) override;
   void visit (AST::LoopExpr &expr) override;
   void visit (AST::WhileLoopExpr &expr) override;
-  void visit (AST::ForLoopExpr &expr) override;
   void visit (AST::BreakExpr &expr) override;
   void visit (AST::ContinueExpr &expr) override;
   void visit (AST::BorrowExpr &expr) override;
diff --git a/gcc/rust/hir/rust-ast-lower.cc b/gcc/rust/hir/rust-ast-lower.cc
index 76bd135497a..e6e327fe1da 100644
--- a/gcc/rust/hir/rust-ast-lower.cc
+++ b/gcc/rust/hir/rust-ast-lower.cc
@@ -422,12 +422,6 @@ ASTLoweringExprWithBlock::visit (AST::WhileLoopExpr &expr)
                              expr.get_outer_attrs ());
 }
 
-void
-ASTLoweringExprWithBlock::visit (AST::ForLoopExpr &expr)
-{
-  rust_unreachable ();
-}
-
 void
 ASTLoweringExprWithBlock::visit (AST::MatchExpr &expr)
 {
-- 
2.49.0

Reply via email to