From: Pierre-Emmanuel Patry <[email protected]>

A crate is not a visitable and thus cannot be used with the debug
function. Until it is made visitable this commit provides a function
to dump the content of a crate.

gcc/rust/ChangeLog:

        * ast/rust-ast-dump.cc (debug): Add debug function which calls debug
        on every crate field.
        * ast/rust-ast-dump.h (debug): Add function prototype.

Signed-off-by: Pierre-Emmanuel Patry <[email protected]>
---
 gcc/rust/ast/rust-ast-dump.cc | 13 +++++++++++++
 gcc/rust/ast/rust-ast-dump.h  |  1 +
 2 files changed, 14 insertions(+)

diff --git a/gcc/rust/ast/rust-ast-dump.cc b/gcc/rust/ast/rust-ast-dump.cc
index a30e85ed0ad..e813ea9d7f5 100644
--- a/gcc/rust/ast/rust-ast-dump.cc
+++ b/gcc/rust/ast/rust-ast-dump.cc
@@ -105,3 +105,16 @@ debug (Rust::AST::Visitable &v)
 {
   Rust::AST::Dump::debug (v);
 }
+
+void
+debug (Rust::AST::Crate &crate)
+{
+  for (auto &inner_attr : crate.get_inner_attrs ())
+    {
+      debug (inner_attr);
+    }
+  for (auto &item : crate.items)
+    {
+      debug (*item);
+    }
+}
diff --git a/gcc/rust/ast/rust-ast-dump.h b/gcc/rust/ast/rust-ast-dump.h
index 497f84aae91..cb281de8eee 100644
--- a/gcc/rust/ast/rust-ast-dump.h
+++ b/gcc/rust/ast/rust-ast-dump.h
@@ -143,5 +143,6 @@ private:
 
 // In the global namespace to make it easier to call from debugger
 void debug (Rust::AST::Visitable &v);
+void debug (Rust::AST::Crate &v);
 
 #endif // !RUST_AST_DUMP_H
-- 
2.50.1

Reply via email to