]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
gccrs: Fix ICE on error propagation with generic
authorbenjamin.thos <benjamin.thos@epita.fr>
Thu, 12 Sep 2024 17:10:49 +0000 (17:10 +0000)
committerArthur Cohen <arthur.cohen@embecosm.com>
Wed, 19 Mar 2025 14:32:11 +0000 (15:32 +0100)
add a resolve expr visitor on error propagation to avoid internal
compiler error when used with generics

gcc/rust/ChangeLog:

* resolve/rust-ast-resolve-expr.cc (ResolveExpr::visit): Add
implementation of error propagation visitor
* resolve/rust-ast-resolve-expr.h: Add prototype of error
propagation

Signed-off-by: benjamin.thos <benjamin.thos@epita.fr>
gcc/rust/resolve/rust-ast-resolve-expr.cc
gcc/rust/resolve/rust-ast-resolve-expr.h

index 7c2ba9c9d2cfc823228ac5e234da34def79ce438..7ddf4a98f222c6d450cec2677c976dbc44b266ae 100644 (file)
@@ -23,6 +23,7 @@
 #include "rust-ast-resolve-pattern.h"
 #include "rust-ast-resolve-path.h"
 #include "diagnostic.h"
+#include "rust-expr.h"
 
 namespace Rust {
 namespace Resolver {
@@ -94,6 +95,12 @@ ResolveExpr::visit (AST::MethodCallExpr &expr)
     ResolveExpr::go (*param, prefix, canonical_prefix);
 }
 
+void
+ResolveExpr::visit (AST::ErrorPropagationExpr &expr)
+{
+  ResolveExpr::go (expr.get_propagating_expr (), prefix, canonical_prefix);
+}
+
 void
 ResolveExpr::visit (AST::AssignmentExpr &expr)
 {
index 51a69e9886cc6ec13bbca4db10f679dcb5e121cc..562a3bd02722bb34ea21af03928a3d926417cfe8 100644 (file)
@@ -22,6 +22,7 @@
 #include "rust-ast-resolve-base.h"
 #include "rust-ast.h"
 #include "rust-ast-resolve-pattern.h"
+#include "rust-expr.h"
 
 namespace Rust {
 namespace Resolver {
@@ -80,6 +81,7 @@ public:
   void visit (AST::RangeFromToInclExpr &expr) override;
   void visit (AST::ClosureExprInner &expr) override;
   void visit (AST::ClosureExprInnerTyped &expr) override;
+  void visit (AST::ErrorPropagationExpr &expr) override;
 
 protected:
   void resolve_closure_param (AST::ClosureParam &param,