]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
gccrs: Add debug dump to old name resolver
authorPierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
Wed, 11 Dec 2024 13:19:44 +0000 (14:19 +0100)
committerArthur Cohen <arthur.cohen@embecosm.com>
Mon, 24 Mar 2025 12:06:56 +0000 (13:06 +0100)
It might be necessary to compare both name resolution' internal states
during the transition. This new debug representation could help with
that.

gcc/rust/ChangeLog:

* resolve/rust-name-resolver.h: Add new degug dump for old name
resolver.

Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
gcc/rust/resolve/rust-name-resolver.h

index 43b79e510050876571583bc8f2ceff555ff8ddae..a3b34a9f160005aced30b13afaa674295efd9023 100644 (file)
@@ -204,6 +204,41 @@ public:
   void insert_captured_item (NodeId id);
   const std::set<NodeId> &get_captures (NodeId id) const;
 
+  std::string as_debug_string () const
+  {
+    std::stringstream ss;
+
+    ss << "Names:\n";
+    for (auto &n : name_ribs)
+      {
+       ss << "\tNodeID: " << n.first << " Rib: " << n.second->debug_str ()
+          << "\n";
+      }
+    ss << "Types:\n";
+    for (auto &n : type_ribs)
+      {
+       ss << "\tNodeID: " << n.first << " Rib: " << n.second->debug_str ()
+          << "\n";
+      }
+    ss << "Macros:\n";
+
+    for (auto &n : macro_ribs)
+      {
+       ss << "\tNodeID: " << n.first << " Rib: " << n.second->debug_str ()
+          << "\n";
+      }
+
+    ss << "Labels:\n";
+
+    for (auto &n : label_ribs)
+      {
+       ss << "\tNodeID: " << n.first << " Rib: " << n.second->debug_str ()
+          << "\n";
+      }
+
+    return ss.str ();
+  }
+
 protected:
   bool decl_needs_capture (NodeId decl_rib_node_id, NodeId closure_rib_node_id,
                           const Scope &scope);