From 16e00f3b14cf5a36624c287cfcded74a38b55212 Mon Sep 17 00:00:00 2001 From: Pierre-Emmanuel Patry Date: Mon, 15 Jan 2024 16:34:36 +0100 Subject: gccrs: Make globbing definition shadowable by default Elements from glob use declaration shall be shadowable by default. gcc/rust/ChangeLog: * resolve/rust-forever-stack.h: Add a new function prototype to insert a shadowable definition. * resolve/rust-forever-stack.hxx: Add the new insert_shadowable function to insert shadowable definition into the forever stack. * resolve/rust-name-resolution-context.cc (NameResolutionContext::insert_shadowable): Likewise with the name resolution context. * resolve/rust-name-resolution-context.h: Add name resolution context insert_shadowable member function prototype. * resolve/rust-toplevel-name-resolver-2.0.cc (GlobbingVisitor::visit): Insert shadowable definition into the forever stack for glob use declaration. Signed-off-by: Pierre-Emmanuel Patry --- .../resolve/rust-toplevel-name-resolver-2.0.cc | 35 +++++++++++----------- 1 file changed, 18 insertions(+), 17 deletions(-) (limited to 'gcc/rust/resolve/rust-toplevel-name-resolver-2.0.cc') diff --git a/gcc/rust/resolve/rust-toplevel-name-resolver-2.0.cc b/gcc/rust/resolve/rust-toplevel-name-resolver-2.0.cc index 5012041..7f4169a 100644 --- a/gcc/rust/resolve/rust-toplevel-name-resolver-2.0.cc +++ b/gcc/rust/resolve/rust-toplevel-name-resolver-2.0.cc @@ -36,71 +36,72 @@ void GlobbingVisitor::visit (AST::Module &module) { if (module.get_visibility ().is_public ()) - ctx.insert (module.get_name (), module.get_node_id (), Namespace::Types); + ctx.insert_shadowable (module.get_name (), module.get_node_id (), + Namespace::Types); } void GlobbingVisitor::visit (AST::MacroRulesDefinition ¯o) { if (macro.get_visibility ().is_public ()) - ctx.insert (macro.get_rule_name (), macro.get_node_id (), - Namespace::Macros); + ctx.insert_shadowable (macro.get_rule_name (), macro.get_node_id (), + Namespace::Macros); } void GlobbingVisitor::visit (AST::Function &function) { if (function.get_visibility ().is_public ()) - ctx.insert (function.get_function_name (), function.get_node_id (), - Namespace::Values); + ctx.insert_shadowable (function.get_function_name (), + function.get_node_id (), Namespace::Values); } void GlobbingVisitor::visit (AST::StaticItem &static_item) { if (static_item.get_visibility ().is_public ()) - ctx.insert (static_item.get_identifier (), static_item.get_node_id (), - Namespace::Values); + ctx.insert_shadowable (static_item.get_identifier (), + static_item.get_node_id (), Namespace::Values); } void GlobbingVisitor::visit (AST::StructStruct &struct_item) { if (struct_item.get_visibility ().is_public ()) - ctx.insert (struct_item.get_identifier (), struct_item.get_node_id (), - Namespace::Values); + ctx.insert_shadowable (struct_item.get_identifier (), + struct_item.get_node_id (), Namespace::Values); } void GlobbingVisitor::visit (AST::TupleStruct &tuple_struct) { if (tuple_struct.get_visibility ().is_public ()) - ctx.insert (tuple_struct.get_identifier (), tuple_struct.get_node_id (), - Namespace::Values); + ctx.insert_shadowable (tuple_struct.get_identifier (), + tuple_struct.get_node_id (), Namespace::Values); } void GlobbingVisitor::visit (AST::Enum &enum_item) { if (enum_item.get_visibility ().is_public ()) - ctx.insert (enum_item.get_identifier (), enum_item.get_node_id (), - Namespace::Values); + ctx.insert_shadowable (enum_item.get_identifier (), + enum_item.get_node_id (), Namespace::Values); } void GlobbingVisitor::visit (AST::Union &union_item) { if (union_item.get_visibility ().is_public ()) - ctx.insert (union_item.get_identifier (), union_item.get_node_id (), - Namespace::Values); + ctx.insert_shadowable (union_item.get_identifier (), + union_item.get_node_id (), Namespace::Values); } void GlobbingVisitor::visit (AST::ConstantItem &const_item) { if (const_item.get_visibility ().is_public ()) - ctx.insert (const_item.get_identifier (), const_item.get_node_id (), - Namespace::Values); + ctx.insert_shadowable (const_item.get_identifier (), + const_item.get_node_id (), Namespace::Values); } void -- cgit v1.1