]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Fix ICE on error propagation with generic
authorbenjamin.thos <benjamin.thos@epita.fr>
Thu, 12 Sep 2024 17:10:49 +0000 (17:10 +0000)
committerPhilip Herron <philip.herron@embecosm.com>
Fri, 20 Sep 2024 16:23:42 +0000 (16:23 +0000)
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 cc7c11ccf22cf635eb6845855d00b6419b6a96c9..9c2be4a57160792aa89cbe1a76b5abc535f33fad 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 12b4868e31e2489bfd57c771c61ed3baeed89a12..374ffb06fd5a20f703b5ea344177fd9bdc436fff 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,