From 84434bc0844545e9c3fb392126f3e80913028b9e Mon Sep 17 00:00:00 2001 From: Eric Holk Date: Thu, 5 Jul 2012 16:46:32 -0700 Subject: Recursively expand items, and keep expansion stack, per Paul's code review comments. --- src/libsyntax/ext/expand.rs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'src/libsyntax/ext') diff --git a/src/libsyntax/ext/expand.rs b/src/libsyntax/ext/expand.rs index 63b3c0881e1..4ac7dc19c00 100644 --- a/src/libsyntax/ext/expand.rs +++ b/src/libsyntax/ext/expand.rs @@ -139,7 +139,7 @@ fn expand_item(exts: hashmap, }; let it = alt it.node { ast::item_mac(*) { - expand_item_mac(exts, cx, it) + expand_item_mac(exts, cx, it, fld) } _ { it } }; @@ -150,7 +150,8 @@ fn expand_item(exts: hashmap, } fn expand_item_mac(exts: hashmap, - cx: ext_ctxt, &&it: @ast::item) -> @ast::item { + cx: ext_ctxt, &&it: @ast::item, + fld: ast_fold) -> @ast::item { alt it.node { item_mac({node: mac_invoc_tt(pth, tt), span}) { let extname = pth.idents[0]; @@ -160,7 +161,13 @@ fn expand_item_mac(exts: hashmap, #fmt("macro undefined: '%s'", *extname)) } some(item_tt(expand)) { - expand.expander(cx, it.span, it.ident, tt) + cx.bt_push(expanded_from({call_site: it.span, + callie: {name: *extname, + span: expand.span}})); + let it = fld.fold_item( + expand.expander(cx, it.span, it.ident, tt)); + cx.bt_pop(); + ret it } _ { cx.span_fatal(it.span, #fmt("%s is not a legal here", *extname)) } -- cgit 1.4.1-3-g733a5