Skip to content

Commit a6fcfd7

Browse files
committed
syntax: fix missing push in item macro expansion
1 parent 70e0c6e commit a6fcfd7

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

src/libsyntax/ext/expand.rs

+9-5
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,7 @@ fn expand_item_mac(exts: HashMap<~str, syntax_extension>,
237237
);
238238
239239
let extname = cx.parse_sess().interner.get(pth.idents[0]);
240-
let (expanded, ex_span) = match exts.find(*extname) {
240+
let expanded = match exts.find(*extname) {
241241
None => cx.span_fatal(pth.span,
242242
fmt!("macro undefined: '%s!'", *extname)),
243243
@@ -248,22 +248,26 @@ fn expand_item_mac(exts: HashMap<~str, syntax_extension>,
248248
given '%s'", *extname,
249249
*cx.parse_sess().interner.get(it.ident)));
250250
}
251-
(((*expand).expander)(cx, it.span, tts), (*expand).span)
251+
cx.bt_push(ExpandedFrom({call_site: it.span,
252+
callie: {name: *extname,
253+
span: (*expand).span}}));
254+
((*expand).expander)(cx, it.span, tts)
252255
}
253256
Some(item_tt(ref expand)) => {
254257
if it.ident == parse::token::special_idents::invalid {
255258
cx.span_fatal(pth.span,
256259
fmt!("macro %s! expects an ident argument",
257260
*extname));
258261
}
259-
(((*expand).expander)(cx, it.span, it.ident, tts), (*expand).span)
262+
cx.bt_push(ExpandedFrom({call_site: it.span,
263+
callie: {name: *extname,
264+
span: (*expand).span}}));
265+
((*expand).expander)(cx, it.span, it.ident, tts)
260266
}
261267
_ => cx.span_fatal(
262268
it.span, fmt!("%s! is not legal in item position", *extname))
263269
};
264270
265-
cx.bt_push(ExpandedFrom({call_site: it.span,
266-
callie: {name: *extname, span: ex_span}}));
267271
let maybe_it = match expanded {
268272
mr_item(it) => fld.fold_item(it),
269273
mr_expr(_) => cx.span_fatal(pth.span,

0 commit comments

Comments
 (0)