diff options
| author | Paul Stansifer <paul.stansifer@gmail.com> | 2012-08-06 17:50:45 -0700 |
|---|---|---|
| committer | Paul Stansifer <paul.stansifer@gmail.com> | 2012-08-06 18:27:37 -0700 |
| commit | c0f7ed68e235b61a2e9710864a2283f554bb470d (patch) | |
| tree | d00baa3f90ce0e4b24f747783bf0fe6e20cd842e /src/libsyntax/print | |
| parent | a4cedd9598ec44d4f475adc3a9e62edcd08bc741 (diff) | |
| download | rust-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.rs | 41 |
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); } |
