https://gcc.gnu.org/g:5d61ca14fc1ba088d355c0d4ba457137da9a595d

commit r15-8751-g5d61ca14fc1ba088d355c0d4ba457137da9a595d
Author: Pierre-Emmanuel Patry <pierre-emmanuel.pa...@embecosm.com>
Date:   Wed Dec 11 15:12:00 2024 +0100

    gccrs: Add unit struct to name namespace in old resolver
    
    We missed the name namespace for unit struct in the old resolver.
    
    gcc/rust/ChangeLog:
    
            * resolve/rust-ast-resolve-toplevel.h: Add struct to name namespace.
    
    Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.pa...@embecosm.com>

Diff:
---
 gcc/rust/resolve/rust-ast-resolve-toplevel.h | 23 +++++++++++++++--------
 1 file changed, 15 insertions(+), 8 deletions(-)

diff --git a/gcc/rust/resolve/rust-ast-resolve-toplevel.h 
b/gcc/rust/resolve/rust-ast-resolve-toplevel.h
index 565ca922e84d..6828e573618a 100644
--- a/gcc/rust/resolve/rust-ast-resolve-toplevel.h
+++ b/gcc/rust/resolve/rust-ast-resolve-toplevel.h
@@ -242,14 +242,21 @@ public:
     auto path = prefix.append (decl);
     auto cpath = canonical_prefix.append (decl);
 
-    resolver->get_type_scope ().insert (
-      path, struct_decl.get_node_id (), struct_decl.get_locus (), false,
-      Rib::ItemType::Type,
-      [&] (const CanonicalPath &, NodeId, location_t locus) -> void {
-       rich_location r (line_table, struct_decl.get_locus ());
-       r.add_range (locus);
-       rust_error_at (r, "redefined multiple times");
-      });
+    auto duplicate_item
+      = [&] (const CanonicalPath &, NodeId, location_t locus) -> void {
+      rich_location r (line_table, struct_decl.get_locus ());
+      r.add_range (locus);
+      rust_error_at (r, "redefined multiple times");
+    };
+
+    resolver->get_type_scope ().insert (path, struct_decl.get_node_id (),
+                                       struct_decl.get_locus (), false,
+                                       Rib::ItemType::Type, duplicate_item);
+
+    if (struct_decl.is_unit_struct ())
+      resolver->get_name_scope ().insert (path, struct_decl.get_node_id (),
+                                         struct_decl.get_locus (), false,
+                                         Rib::ItemType::Type, duplicate_item);
 
     NodeId current_module = resolver->peek_current_module_scope ();
     mappings.insert_module_child_item (current_module, decl);

Reply via email to