From: Owen Avery Date: Tue, 22 Jul 2025 02:32:29 +0000 (-0400) Subject: gccrs: Handle IfLetExprConseqElse in DefaultResolver X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=3c18f1e487764251aad411e927bd0857c42ae3cd;p=thirdparty%2Fgcc.git gccrs: Handle IfLetExprConseqElse in DefaultResolver 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 --- diff --git a/gcc/rust/resolve/rust-default-resolver.cc b/gcc/rust/resolve/rust-default-resolver.cc index 588caa4e6f0..f1c0e5caffe 100644 --- a/gcc/rust/resolve/rust-default-resolver.cc +++ b/gcc/rust/resolve/rust-default-resolver.cc @@ -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 (expr)); + visit (expr.get_else_block ()); +} + void DefaultResolver::visit (AST::Trait &trait) { diff --git a/gcc/rust/resolve/rust-default-resolver.h b/gcc/rust/resolve/rust-default-resolver.h index 3fa03791107..cf0df68595f 100644 --- a/gcc/rust/resolve/rust-default-resolver.h +++ b/gcc/rust/resolve/rust-default-resolver.h @@ -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 &) {}