]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
gccrs: Lower ErrorPropagationExpr from AST to HIR
authorSergey Bugaev <bugaevc@gmail.com>
Fri, 14 Apr 2023 16:47:46 +0000 (19:47 +0300)
committerArthur Cohen <arthur.cohen@embecosm.com>
Tue, 16 Jan 2024 17:34:10 +0000 (18:34 +0100)
gcc/rust/ChangeLog:
* hir/rust-ast-lower-expr.h, hir/rust-ast-lower-expr.cc:
Lower AST::ErrorPropagationExpr to HIR::ErrorPropagationExpr

Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
gcc/rust/hir/rust-ast-lower-expr.cc
gcc/rust/hir/rust-ast-lower-expr.h

index 31b7f0f490588c3c6d5fc90d093372705d52899b..578fc462712ba52ac02b9cb241881b5f2c37a0bc 100644 (file)
@@ -673,6 +673,21 @@ ASTLoweringExpr::visit (AST::DereferenceExpr &expr)
                                expr.get_outer_attrs (), expr.get_locus ());
 }
 
+void
+ASTLoweringExpr::visit (AST::ErrorPropagationExpr &expr)
+{
+  HIR::Expr *propagating_expr
+    = ASTLoweringExpr::translate (expr.get_propagating_expr ().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::ErrorPropagationExpr (
+    mapping, std::unique_ptr<HIR::Expr> (propagating_expr),
+    expr.get_outer_attrs (), expr.get_locus ());
+}
+
 void
 ASTLoweringExpr::visit (AST::MatchExpr &expr)
 {
index 5b86ea292a0c3688f220dce188415918f4debc02..56da9d1ab88733fdba05858e705fbb0705846b17 100644 (file)
@@ -111,6 +111,7 @@ public:
   void visit (AST::ContinueExpr &expr) override;
   void visit (AST::BorrowExpr &expr) override;
   void visit (AST::DereferenceExpr &expr) override;
+  void visit (AST::ErrorPropagationExpr &expr) override;
   void visit (AST::MatchExpr &expr) override;
   void visit (AST::RangeFromToExpr &expr) override;
   void visit (AST::RangeFromExpr &expr) override;