diff options
author | Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com> | 2024-01-15 16:34:36 +0100 |
---|---|---|
committer | Arthur Cohen <arthur.cohen@embecosm.com> | 2024-08-01 16:52:26 +0200 |
commit | 16e00f3b14cf5a36624c287cfcded74a38b55212 (patch) | |
tree | b3b82064b22289fcd8488fd658a5858577b0703b /gcc/rust/resolve/rust-toplevel-name-resolver-2.0.cc | |
parent | f9ad1c29376e06950c3065f574f2df96b3265416 (diff) | |
download | gcc-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.cc | 35 |
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 ¯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 |