From: Philip Herron Date: Tue, 30 May 2023 12:45:14 +0000 (+0100) Subject: gccrs: Fix missing pop of name scope at the end of Trait Impl X-Git-Tag: basepoints/gcc-15~2516 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=422244101eedcd216e209e98ada698839de45aac;p=thirdparty%2Fgcc.git gccrs: Fix missing pop of name scope at the end of Trait Impl This adds the missing label scope and fixes the missing pop of the name scope at the end of the resolution for a TraitImpl. gcc/rust/ChangeLog: * resolve/rust-ast-resolve-item.cc (ResolveItem::visit): fix missing pop Signed-off-by: Philip Herron --- diff --git a/gcc/rust/resolve/rust-ast-resolve-item.cc b/gcc/rust/resolve/rust-ast-resolve-item.cc index dd8b0a975414..8d29e9bcd25d 100644 --- a/gcc/rust/resolve/rust-ast-resolve-item.cc +++ b/gcc/rust/resolve/rust-ast-resolve-item.cc @@ -699,8 +699,10 @@ ResolveItem::visit (AST::TraitImpl &impl_block) resolver->get_name_scope ().push (scope_node_id); resolver->get_type_scope ().push (scope_node_id); + resolver->get_label_scope ().push (scope_node_id); resolver->push_new_name_rib (resolver->get_name_scope ().peek ()); resolver->push_new_type_rib (resolver->get_type_scope ().peek ()); + resolver->push_new_label_rib (resolver->get_type_scope ().peek ()); if (impl_block.has_generics ()) for (auto &generic : impl_block.get_generic_params ()) @@ -714,8 +716,9 @@ ResolveItem::visit (AST::TraitImpl &impl_block) NodeId trait_resolved_node = ResolveType::go (&impl_block.get_trait_path ()); if (trait_resolved_node == UNKNOWN_NODEID) { - resolver->get_type_scope ().pop (); resolver->get_name_scope ().pop (); + resolver->get_type_scope ().pop (); + resolver->get_label_scope ().pop (); return; } @@ -723,8 +726,9 @@ ResolveItem::visit (AST::TraitImpl &impl_block) NodeId type_resolved_node = ResolveType::go (impl_block.get_type ().get ()); if (type_resolved_node == UNKNOWN_NODEID) { - resolver->get_type_scope ().pop (); resolver->get_name_scope ().pop (); + resolver->get_type_scope ().pop (); + resolver->get_label_scope ().pop (); return; } @@ -792,9 +796,12 @@ ResolveItem::visit (AST::TraitImpl &impl_block) resolve_impl_item (impl_item.get (), impl_prefix, cpath); } - resolver->get_type_scope ().peek ()->clear_name ( - Self, impl_block.get_type ()->get_node_id ()); + Rib *r = resolver->get_type_scope ().peek (); + r->clear_name (Self, impl_block.get_type ()->get_node_id ()); + + resolver->get_name_scope ().pop (); resolver->get_type_scope ().pop (); + resolver->get_label_scope ().pop (); } void