]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
gccrs: Handle IfLetExprConseqElse in DefaultResolver
authorOwen Avery <powerboat9.gamer@gmail.com>
Tue, 22 Jul 2025 02:32:29 +0000 (22:32 -0400)
committerArthur Cohen <arthur.cohen@embecosm.com>
Tue, 5 Aug 2025 14:36:57 +0000 (16:36 +0200)
This relies on the DefaultASTVisitor visitor for IfLetExprConseqElse
performing a virtual call of the visitor for IfLetExpr, which doesn't
hold when DefaultASTVisitor is generated by the X-macro-DSL-system I
have in another patch.

gcc/rust/ChangeLog:

* resolve/rust-default-resolver.cc (DefaultResolver::visit): Add
visitor for IfLetExprConseqElse.
* resolve/rust-default-resolver.h (DefaultResolver::visit):
Likewise.

Signed-off-by: Owen Avery <powerboat9.gamer@gmail.com>
gcc/rust/resolve/rust-default-resolver.cc
gcc/rust/resolve/rust-default-resolver.h

index 588caa4e6f0c476d70646c71be87d847377e1596..f1c0e5caffe8d52e699ca15a57b10a3714b4205a 100644 (file)
@@ -110,6 +110,13 @@ DefaultResolver::visit (AST::IfLetExpr &expr)
   ctx.scoped (Rib::Kind::Normal, expr.get_node_id (), inner_vis);
 }
 
+void
+DefaultResolver::visit (AST::IfLetExprConseqElse &expr)
+{
+  DefaultResolver::visit (static_cast<AST::IfLetExpr &> (expr));
+  visit (expr.get_else_block ());
+}
+
 void
 DefaultResolver::visit (AST::Trait &trait)
 {
index 3fa037911075ff0501c4fe001a7e23f183bdba67..cf0df68595f0169c9b6a5f0ed72f55d636667ef9 100644 (file)
@@ -49,6 +49,7 @@ public:
   void visit (AST::ForLoopExpr &expr) override;
   virtual void visit_if_let_patterns (AST::IfLetExpr &expr);
   void visit (AST::IfLetExpr &expr) override;
+  void visit (AST::IfLetExprConseqElse &expr) override;
   void visit (AST::Trait &) override;
   // used to handle Self insertion in TopLevel
   virtual void maybe_insert_big_self (AST::Impl &) {}