https://gcc.gnu.org/g:55c047ebe117ec97c8d9040035d73113ae0d6fd2

commit 55c047ebe117ec97c8d9040035d73113ae0d6fd2
Author: Pierre-Emmanuel Patry <pierre-emmanuel.pa...@embecosm.com>
Date:   Wed Dec 11 14:19:44 2024 +0100

    Add debug dump to old name resolver
    
    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.pa...@embecosm.com>

Diff:
---
 gcc/rust/resolve/rust-name-resolver.h | 35 +++++++++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)

diff --git a/gcc/rust/resolve/rust-name-resolver.h 
b/gcc/rust/resolve/rust-name-resolver.h
index 5e1901adfd5a..bf5ef7786960 100644
--- a/gcc/rust/resolve/rust-name-resolver.h
+++ b/gcc/rust/resolve/rust-name-resolver.h
@@ -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);

Reply via email to