diff options
| author | Graydon Hoare <graydon@mozilla.com> | 2012-12-06 16:19:05 -0800 |
|---|---|---|
| committer | Graydon Hoare <graydon@mozilla.com> | 2012-12-07 11:21:14 -0800 |
| commit | a6fcfd726bb70582c5e2cf1bb47d2fcd8834e74e (patch) | |
| tree | 6aab1e14b965e3c24425a76e7a0768f4ac874c4e /src/libsyntax/ext | |
| parent | 70e0c6e27d54779e718aef866d6ab569af3c6a28 (diff) | |
| download | rust-a6fcfd726bb70582c5e2cf1bb47d2fcd8834e74e.tar.gz rust-a6fcfd726bb70582c5e2cf1bb47d2fcd8834e74e.zip | |
syntax: fix missing push in item macro expansion
Diffstat (limited to 'src/libsyntax/ext')
| -rw-r--r-- | src/libsyntax/ext/expand.rs | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/libsyntax/ext/expand.rs b/src/libsyntax/ext/expand.rs index 022f843a0ec..1890ec36bdd 100644 --- a/src/libsyntax/ext/expand.rs +++ b/src/libsyntax/ext/expand.rs @@ -237,7 +237,7 @@ fn expand_item_mac(exts: HashMap<~str, syntax_extension>, ); let extname = cx.parse_sess().interner.get(pth.idents[0]); - let (expanded, ex_span) = match exts.find(*extname) { + let expanded = match exts.find(*extname) { None => cx.span_fatal(pth.span, fmt!("macro undefined: '%s!'", *extname)), @@ -248,7 +248,10 @@ fn expand_item_mac(exts: HashMap<~str, syntax_extension>, given '%s'", *extname, *cx.parse_sess().interner.get(it.ident))); } - (((*expand).expander)(cx, it.span, tts), (*expand).span) + cx.bt_push(ExpandedFrom({call_site: it.span, + callie: {name: *extname, + span: (*expand).span}})); + ((*expand).expander)(cx, it.span, tts) } Some(item_tt(ref expand)) => { if it.ident == parse::token::special_idents::invalid { @@ -256,14 +259,15 @@ fn expand_item_mac(exts: HashMap<~str, syntax_extension>, fmt!("macro %s! expects an ident argument", *extname)); } - (((*expand).expander)(cx, it.span, it.ident, tts), (*expand).span) + cx.bt_push(ExpandedFrom({call_site: it.span, + callie: {name: *extname, + span: (*expand).span}})); + ((*expand).expander)(cx, it.span, it.ident, tts) } _ => cx.span_fatal( it.span, fmt!("%s! is not legal in item position", *extname)) }; - cx.bt_push(ExpandedFrom({call_site: it.span, - callie: {name: *extname, span: ex_span}})); let maybe_it = match expanded { mr_item(it) => fld.fold_item(it), mr_expr(_) => cx.span_fatal(pth.span, |
