@@ -11,6 +11,8 @@ import dvec::{dvec, extensions};
11
11
import parse:: classify:: * ;
12
12
import util:: interner;
13
13
14
+ type ident_interner = @interner:: interner < @~str > ;
15
+
14
16
// The ps is stored here to prevent recursive type.
15
17
enum ann_node {
16
18
node_block( ps , ast:: blk ) ,
@@ -48,15 +50,27 @@ fn end(s: ps) {
48
50
49
51
fn rust_printer ( writer : io:: writer ) -> ps {
50
52
return @{ s: pp:: mk_printer ( writer, default_columns) ,
51
- cm: none :: < codemap > ,
52
- intr: @interner:: mk :: < @~str > ( |x| str:: hash ( * x) ,
53
- |x, y| str:: eq ( * x, * y) ) ,
54
- comments: none :: < ~[ comments:: cmnt ] > ,
55
- literals: none :: < ~[ comments:: lit ] > ,
56
- mut cur_cmnt: 0 u,
57
- mut cur_lit: 0 u,
58
- boxes: dvec ( ) ,
59
- ann: no_ann ( ) } ;
53
+ cm: none :: < codemap > ,
54
+ intr: @interner:: mk :: < @~str > ( |x| str:: hash ( * x) ,
55
+ |x, y| str:: eq ( * x, * y) ) ,
56
+ comments: none :: < ~[ comments:: cmnt ] > ,
57
+ literals: none :: < ~[ comments:: lit ] > ,
58
+ mut cur_cmnt: 0 u,
59
+ mut cur_lit: 0 u,
60
+ boxes: dvec ( ) ,
61
+ ann: no_ann ( ) } ;
62
+ }
63
+
64
+ fn unexpanded_rust_printer ( writer : io:: writer , intr : ident_interner ) -> ps {
65
+ return @{ s: pp:: mk_printer ( writer, default_columns) ,
66
+ cm: none :: < codemap > ,
67
+ intr: intr,
68
+ comments: none :: < ~[ comments:: cmnt ] > ,
69
+ literals: none :: < ~[ comments:: lit ] > ,
70
+ mut cur_cmnt: 0 u,
71
+ mut cur_lit: 0 u,
72
+ boxes: dvec ( ) ,
73
+ ann: no_ann ( ) } ;
60
74
}
61
75
62
76
const indent_unit: uint = 4 u;
@@ -101,6 +115,15 @@ fn pat_to_str(pat: @ast::pat) -> ~str { return to_str(pat, print_pat); }
101
115
102
116
fn expr_to_str ( e : @ast:: expr ) -> ~str { return to_str ( e, print_expr) ; }
103
117
118
+ fn unexpanded_tt_to_str ( tt : ast:: token_tree , intr : ident_interner )
119
+ -> ~str {
120
+ let buffer = io:: mem_buffer ( ) ;
121
+ let s = unexpanded_rust_printer ( io:: mem_buffer_writer ( buffer) , intr) ;
122
+ print_tt ( s, tt) ;
123
+ eof ( s. s ) ;
124
+ io:: mem_buffer_str ( buffer)
125
+ }
126
+
104
127
fn stmt_to_str ( s : ast:: stmt ) -> ~str { return to_str ( s, print_stmt) ; }
105
128
106
129
fn item_to_str ( i : @ast:: item ) -> ~str { return to_str ( i, print_item) ; }
0 commit comments