summary refs log tree commit diff
path: root/src/libsyntax/print
diff options
context:
space:
mode:
authorPaul Stansifer <paul.stansifer@gmail.com>2012-08-06 17:50:45 -0700
committerPaul Stansifer <paul.stansifer@gmail.com>2012-08-06 18:27:37 -0700
commitc0f7ed68e235b61a2e9710864a2283f554bb470d (patch)
treed00baa3f90ce0e4b24f747783bf0fe6e20cd842e /src/libsyntax/print
parenta4cedd9598ec44d4f475adc3a9e62edcd08bc741 (diff)
downloadrust-c0f7ed68e235b61a2e9710864a2283f554bb470d.tar.gz
rust-c0f7ed68e235b61a2e9710864a2283f554bb470d.zip
Fix log_syntax of unexpanded code.
Diffstat (limited to 'src/libsyntax/print')
-rw-r--r--src/libsyntax/print/pprust.rs41
1 files changed, 32 insertions, 9 deletions
diff --git a/src/libsyntax/print/pprust.rs b/src/libsyntax/print/pprust.rs
index 3fd30eb30a9..9d7731e8441 100644
--- a/src/libsyntax/print/pprust.rs
+++ b/src/libsyntax/print/pprust.rs
@@ -11,6 +11,8 @@ import dvec::{dvec, extensions};
 import parse::classify::*;
 import util::interner;
 
+type ident_interner = @interner::interner<@~str>;
+
 // The ps is stored here to prevent recursive type.
 enum ann_node {
     node_block(ps, ast::blk),
@@ -48,15 +50,27 @@ fn end(s: ps) {
 
 fn rust_printer(writer: io::writer) -> ps {
     return @{s: pp::mk_printer(writer, default_columns),
-          cm: none::<codemap>,
-          intr: @interner::mk::<@~str>(|x| str::hash(*x),
-                                       |x,y| str::eq(*x, *y)),
-          comments: none::<~[comments::cmnt]>,
-          literals: none::<~[comments::lit]>,
-          mut cur_cmnt: 0u,
-          mut cur_lit: 0u,
-          boxes: dvec(),
-          ann: no_ann()};
+             cm: none::<codemap>,
+             intr: @interner::mk::<@~str>(|x| str::hash(*x),
+                                          |x,y| str::eq(*x, *y)),
+             comments: none::<~[comments::cmnt]>,
+             literals: none::<~[comments::lit]>,
+             mut cur_cmnt: 0u,
+             mut cur_lit: 0u,
+             boxes: dvec(),
+             ann: no_ann()};
+}
+
+fn unexpanded_rust_printer(writer: io::writer, intr: ident_interner) -> ps {
+    return @{s: pp::mk_printer(writer, default_columns),
+             cm: none::<codemap>,
+             intr: intr,
+             comments: none::<~[comments::cmnt]>,
+             literals: none::<~[comments::lit]>,
+             mut cur_cmnt: 0u,
+             mut cur_lit: 0u,
+             boxes: dvec(),
+             ann: no_ann()};
 }
 
 const indent_unit: uint = 4u;
@@ -101,6 +115,15 @@ fn pat_to_str(pat: @ast::pat) -> ~str { return to_str(pat, print_pat); }
 
 fn expr_to_str(e: @ast::expr) -> ~str { return to_str(e, print_expr); }
 
+fn unexpanded_tt_to_str(tt: ast::token_tree, intr: ident_interner)
+    -> ~str {
+    let buffer = io::mem_buffer();
+    let s = unexpanded_rust_printer(io::mem_buffer_writer(buffer), intr);
+    print_tt(s, tt);
+    eof(s.s);
+    io::mem_buffer_str(buffer)
+}
+
 fn stmt_to_str(s: ast::stmt) -> ~str { return to_str(s, print_stmt); }
 
 fn item_to_str(i: @ast::item) -> ~str { return to_str(i, print_item); }