aboutsummaryrefslogtreecommitdiff
path: root/gcc/rust
diff options
context:
space:
mode:
authorPierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>2024-01-24 17:04:51 +0100
committerArthur Cohen <arthur.cohen@embecosm.com>2024-08-01 16:52:27 +0200
commit97539b7c20eb08d5b6532016654ecc6ba6c9a09f (patch)
treee7244bfa81b1dde494018e35b229825faf0c1102 /gcc/rust
parentf5da34385410e966a8d517fe2425fcbbdad5617d (diff)
downloadgcc-97539b7c20eb08d5b6532016654ecc6ba6c9a09f.zip
gcc-97539b7c20eb08d5b6532016654ecc6ba6c9a09f.tar.gz
gcc-97539b7c20eb08d5b6532016654ecc6ba6c9a09f.tar.bz2
gccrs: Unit struct constructor shall be resolved
Unit struct have a special constructor that should be added to the struct namespace in order to be resolved later when called. As it is a function it should be added in the value namespace. gcc/rust/ChangeLog: * resolve/rust-toplevel-name-resolver-2.0.cc (GlobbingVisitor::visit): Add the struct constructor when the struct is a unit. Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
Diffstat (limited to 'gcc/rust')
-rw-r--r--gcc/rust/resolve/rust-toplevel-name-resolver-2.0.cc9
1 files changed, 7 insertions, 2 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 4134b9a..75d9bb8 100644
--- a/gcc/rust/resolve/rust-toplevel-name-resolver-2.0.cc
+++ b/gcc/rust/resolve/rust-toplevel-name-resolver-2.0.cc
@@ -68,8 +68,13 @@ void
GlobbingVisitor::visit (AST::StructStruct &struct_item)
{
if (struct_item.get_visibility ().is_public ())
- ctx.insert_shadowable (struct_item.get_identifier (),
- struct_item.get_node_id (), Namespace::Values);
+ {
+ ctx.insert_shadowable (struct_item.get_identifier (),
+ struct_item.get_node_id (), Namespace::Types);
+ if (struct_item.is_unit_struct ())
+ ctx.insert_shadowable (struct_item.get_identifier (),
+ struct_item.get_node_id (), Namespace::Values);
+ }
}
void