diff options
Diffstat (limited to 'src/libsyntax/ext')
| -rw-r--r-- | src/libsyntax/ext/base.rs | 6 | ||||
| -rw-r--r-- | src/libsyntax/ext/log_syntax.rs | 15 |
2 files changed, 12 insertions, 9 deletions
diff --git a/src/libsyntax/ext/base.rs b/src/libsyntax/ext/base.rs index f2e1855c0f5..79ef81f78c1 100644 --- a/src/libsyntax/ext/base.rs +++ b/src/libsyntax/ext/base.rs @@ -68,6 +68,9 @@ enum syntax_extension { fn syntax_expander_table() -> hashmap<~str, syntax_extension> { fn builtin(f: syntax_expander_) -> syntax_extension {normal({expander: f, span: none})} + fn builtin_expr_tt(f: syntax_expander_tt_) -> syntax_extension { + expr_tt({expander: f, span: none}) + } fn builtin_item_tt(f: syntax_expander_tt_item_) -> syntax_extension { item_tt({expander: f, span: none}) } @@ -86,7 +89,8 @@ fn syntax_expander_table() -> hashmap<~str, syntax_extension> { syntax_expanders.insert(~"ident_to_str", builtin(ext::ident_to_str::expand_syntax_ext)); syntax_expanders.insert(~"log_syntax", - builtin(ext::log_syntax::expand_syntax_ext)); + builtin_expr_tt( + ext::log_syntax::expand_syntax_ext)); syntax_expanders.insert(~"ast", builtin(ext::qquote::expand_ast)); syntax_expanders.insert(~"line", diff --git a/src/libsyntax/ext/log_syntax.rs b/src/libsyntax/ext/log_syntax.rs index f84e496be9c..3be74cba2e4 100644 --- a/src/libsyntax/ext/log_syntax.rs +++ b/src/libsyntax/ext/log_syntax.rs @@ -1,16 +1,15 @@ import base::*; import io::writer_util; -fn expand_syntax_ext(cx: ext_ctxt, sp: codemap::span, arg: ast::mac_arg, - _body: ast::mac_body) -> @ast::expr { - let args = get_mac_args_no_max(cx,sp,arg,0u,~"log_syntax"); +fn expand_syntax_ext(cx: ext_ctxt, sp: codemap::span, tt: ~[ast::token_tree]) + -> base::mac_result { + cx.print_backtrace(); io::stdout().write_line( - str::connect(vec::map(args, - |&&ex| print::pprust::expr_to_str(ex)), ~", ") - ); + print::pprust::unexpanded_tt_to_str(ast::tt_delim(tt), + cx.parse_sess().interner)); //trivial expression - return @{id: cx.next_id(), callee_id: cx.next_id(), - node: ast::expr_rec(~[], option::none), span: sp}; + return mr_expr(@{id: cx.next_id(), callee_id: cx.next_id(), + node: ast::expr_rec(~[], option::none), span: sp}); } |
