Skip to content

Commit e987bef

Browse files
committed
---
yaml --- r: 23019 b: refs/heads/master c: c0f7ed6 h: refs/heads/master i: 23017: 768f49a 23015: 8987091 v: v3
1 parent 59166db commit e987bef

File tree

4 files changed

+45
-19
lines changed

4 files changed

+45
-19
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
refs/heads/master: a4cedd9598ec44d4f475adc3a9e62edcd08bc741
2+
refs/heads/master: c0f7ed68e235b61a2e9710864a2283f554bb470d
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
44
refs/heads/snap-stage3: cd6f24f9d14ac90d167386a56e7a6ac1f0318195
55
refs/heads/try: ffbe0e0e00374358b789b0037bcb3a577cd218be

trunk/src/libsyntax/ext/base.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,9 @@ enum syntax_extension {
6868
fn syntax_expander_table() -> hashmap<~str, syntax_extension> {
6969
fn builtin(f: syntax_expander_) -> syntax_extension
7070
{normal({expander: f, span: none})}
71+
fn builtin_expr_tt(f: syntax_expander_tt_) -> syntax_extension {
72+
expr_tt({expander: f, span: none})
73+
}
7174
fn builtin_item_tt(f: syntax_expander_tt_item_) -> syntax_extension {
7275
item_tt({expander: f, span: none})
7376
}
@@ -86,7 +89,8 @@ fn syntax_expander_table() -> hashmap<~str, syntax_extension> {
8689
syntax_expanders.insert(~"ident_to_str",
8790
builtin(ext::ident_to_str::expand_syntax_ext));
8891
syntax_expanders.insert(~"log_syntax",
89-
builtin(ext::log_syntax::expand_syntax_ext));
92+
builtin_expr_tt(
93+
ext::log_syntax::expand_syntax_ext));
9094
syntax_expanders.insert(~"ast",
9195
builtin(ext::qquote::expand_ast));
9296
syntax_expanders.insert(~"line",

trunk/src/libsyntax/ext/log_syntax.rs

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,15 @@
11
import base::*;
22
import io::writer_util;
33

4-
fn expand_syntax_ext(cx: ext_ctxt, sp: codemap::span, arg: ast::mac_arg,
5-
_body: ast::mac_body) -> @ast::expr {
6-
let args = get_mac_args_no_max(cx,sp,arg,0u,~"log_syntax");
4+
fn expand_syntax_ext(cx: ext_ctxt, sp: codemap::span, tt: ~[ast::token_tree])
5+
-> base::mac_result {
6+
77
cx.print_backtrace();
88
io::stdout().write_line(
9-
str::connect(vec::map(args,
10-
|&&ex| print::pprust::expr_to_str(ex)), ~", ")
11-
);
9+
print::pprust::unexpanded_tt_to_str(ast::tt_delim(tt),
10+
cx.parse_sess().interner));
1211

1312
//trivial expression
14-
return @{id: cx.next_id(), callee_id: cx.next_id(),
15-
node: ast::expr_rec(~[], option::none), span: sp};
13+
return mr_expr(@{id: cx.next_id(), callee_id: cx.next_id(),
14+
node: ast::expr_rec(~[], option::none), span: sp});
1615
}

trunk/src/libsyntax/print/pprust.rs

Lines changed: 32 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ import dvec::{dvec, extensions};
1111
import parse::classify::*;
1212
import util::interner;
1313

14+
type ident_interner = @interner::interner<@~str>;
15+
1416
// The ps is stored here to prevent recursive type.
1517
enum ann_node {
1618
node_block(ps, ast::blk),
@@ -48,15 +50,27 @@ fn end(s: ps) {
4850

4951
fn rust_printer(writer: io::writer) -> ps {
5052
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: 0u,
57-
mut cur_lit: 0u,
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: 0u,
59+
mut cur_lit: 0u,
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: 0u,
71+
mut cur_lit: 0u,
72+
boxes: dvec(),
73+
ann: no_ann()};
6074
}
6175

6276
const indent_unit: uint = 4u;
@@ -101,6 +115,15 @@ fn pat_to_str(pat: @ast::pat) -> ~str { return to_str(pat, print_pat); }
101115

102116
fn expr_to_str(e: @ast::expr) -> ~str { return to_str(e, print_expr); }
103117

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+
104127
fn stmt_to_str(s: ast::stmt) -> ~str { return to_str(s, print_stmt); }
105128

106129
fn item_to_str(i: @ast::item) -> ~str { return to_str(i, print_item); }

0 commit comments

Comments
 (0)