aboutsummaryrefslogtreecommitdiff
path: root/gcc/rust/resolve/rust-toplevel-name-resolver-2.0.cc
diff options
context:
space:
mode:
authorPierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>2024-01-15 16:34:36 +0100
committerArthur Cohen <arthur.cohen@embecosm.com>2024-08-01 16:52:26 +0200
commit16e00f3b14cf5a36624c287cfcded74a38b55212 (patch)
treeb3b82064b22289fcd8488fd658a5858577b0703b /gcc/rust/resolve/rust-toplevel-name-resolver-2.0.cc
parentf9ad1c29376e06950c3065f574f2df96b3265416 (diff)
downloadgcc-16e00f3b14cf5a36624c287cfcded74a38b55212.zip
gcc-16e00f3b14cf5a36624c287cfcded74a38b55212.tar.gz
gcc-16e00f3b14cf5a36624c287cfcded74a38b55212.tar.bz2
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 <pierre-emmanuel.patry@embecosm.com>
Diffstat (limited to 'gcc/rust/resolve/rust-toplevel-name-resolver-2.0.cc')
-rw-r--r--gcc/rust/resolve/rust-toplevel-name-resolver-2.0.cc35
1 files changed, 18 insertions, 17 deletions
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 &macro)
{
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