[COMMITTED] gccrs: dump: Add AST debugging using the AST::Dump class

Message ID 20230131132456.661762-1-arthur.cohen@embecosm.com
State Committed
Commit 7dc41901213d32ff9962f1d54cc6291c38d0e597
Headers
Series [COMMITTED] gccrs: dump: Add AST debugging using the AST::Dump class |

Commit Message

Arthur Cohen Jan. 31, 2023, 1:24 p.m. UTC
  gcc/rust/ChangeLog:

	* ast/rust-ast-dump.h: Add shorthand `AST::Dump::debug` function to
	dump an AST node on `stderr`.

Tested on x86_64-pc-linux-gnu, committed on master.

---
 gcc/rust/ast/rust-ast-dump.h | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)
  

Patch

diff --git a/gcc/rust/ast/rust-ast-dump.h b/gcc/rust/ast/rust-ast-dump.h
index 4fa4db9265f..955dbc0bebc 100644
--- a/gcc/rust/ast/rust-ast-dump.h
+++ b/gcc/rust/ast/rust-ast-dump.h
@@ -52,6 +52,22 @@  public:
   void go (AST::Crate &crate);
   void go (AST::Item &item);
 
+  /**
+   * Use the AST Dump as a debugging tool
+   */
+  template <typename T> static void debug (T &instance)
+  {
+    auto dump = Dump (std::cerr);
+
+    std::cerr << '\n';
+    instance.accept_vis (dump);
+    std::cerr << '\n';
+  }
+  template <typename T> static void debug (std::unique_ptr<T> &instance)
+  {
+    debug (*instance);
+  }
+
 private:
   std::ostream &stream;
   Indent indentation;