https://gcc.gnu.org/g:c48090da99cd03c205f2ee67dd854fe2047d76e6

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

    gccrs: 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 43b79e510050..a3b34a9f1600 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