From 4446e793dad3bf28c67f1bc70d6380f13de63b49 Mon Sep 17 00:00:00 2001 From: "Felix S. Klock II" Date: Thu, 28 Apr 2016 16:22:27 +0200 Subject: [PATCH] Expose pretty print routines that accept just `mir` (no need for a `NodeId`). --- src/librustc_mir/pretty.rs | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/librustc_mir/pretty.rs b/src/librustc_mir/pretty.rs index a6bbd55ffa7a..33f1df17bcba 100644 --- a/src/librustc_mir/pretty.rs +++ b/src/librustc_mir/pretty.rs @@ -269,6 +269,29 @@ fn write_scope_tree(tcx: TyCtxt, Ok(()) } +pub fn write_mir_named(tcx: &ty::TyCtxt, name: &str, mir: &Mir, w: &mut Write, auxiliary: Option<&ScopeAuxiliaryVec>) +-> io::Result<()> { + + let annotations = scope_entry_exit_annotations(auxiliary); + write_mir_intro_named(tcx, name, mir, w)?; + for block in mir.all_basic_blocks() { + write_basic_block(tcx, block, mir, w, &annotations)?; + } + writeln!(w, "}}") +} + +/// Write out a human-readable textual representation of the MIR's +/// `fn` type and the types of its local variables (both user-defined +/// bindings and compiler temporaries). Assumes the function +/// represented by `mir` is named `name`. Note: Generated output +/// introduces an open curly that needs to be closed. +pub fn write_mir_intro_named(tcx: &ty::TyCtxt, name: &str, mir: &Mir, w: &mut Write) +-> io::Result<()> { + write_mir_fn_sig(tcx, name, mir, w)?; + writeln!(w, " {{")?; + write_mir_fn_decls(tcx, mir, w) +} + /// Write out a human-readable textual representation of the MIR's `fn` type and the types of its /// local variables (both user-defined bindings and compiler temporaries). fn write_mir_intro<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>,