]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
gccrs: lower: Add assertions for desugared nodes
authorArthur Cohen <arthur.cohen@embecosm.com>
Tue, 22 Jul 2025 14:47:55 +0000 (16:47 +0200)
committerArthur Cohen <arthur.cohen@embecosm.com>
Tue, 5 Aug 2025 14:37:00 +0000 (16:37 +0200)
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
gcc/rust/hir/rust-ast-lower-base.h
gcc/rust/hir/rust-ast-lower-block.h
gcc/rust/hir/rust-ast-lower-expr.cc
gcc/rust/hir/rust-ast-lower-expr.h
gcc/rust/hir/rust-ast-lower.cc

index 8e8f3b649d0f0ed91b96ae6b80e2ea82558cc003..9098a9fc6cff50873e67eddb44f15379f4d5bf35 100644 (file)
@@ -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
index d9428d61be9ac4cd288d0cb74ce70b2b31dbcb5f..6437b2e9dbb6ba4a3d1fbc06c0437b6357e50e5f 100644 (file)
@@ -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;
index 93cd443fd56efb26b3415c4b445041ca3bb7b12c..f10039bd0d99c7a51fd9a614233332bdea5d16c6 100644 (file)
@@ -213,8 +213,6 @@ public:
 
   void visit (AST::WhileLoopExpr &expr) override;
 
-  void visit (AST::ForLoopExpr &expr) override;
-
   void visit (AST::MatchExpr &expr) override;
 
 private:
index e9c9acc06c8e81d7ee672b6a98b99e5d01559306..4ed51d9f3928155cb1d445a03a02036c73c1c774 100644 (file)
@@ -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)
 {
index eb822c9f4de6d81bac875fc010ce4a4241eb6cd7..4eed4ec452b177247658021c5edabbd49e6ad959 100644 (file)
@@ -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;
index 76bd135497ace1ba090f4a11ebb6fd43915e9a58..e6e327fe1dac6ae564ffae3524db04ffe545fda6 100644 (file)
@@ -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)
 {