diff --git a/src/libsyntax/ext/base.rs b/src/libsyntax/ext/base.rs index 64ae6162ef4e56060ffd95e56c3a30fec5b607c7..083039995ee955ce5366292ceff367578e6b0a6e 100644 --- a/src/libsyntax/ext/base.rs +++ b/src/libsyntax/ext/base.rs @@ -35,18 +35,18 @@ fn expand(&self, sp: Span, meta_item: &ast::MetaItem, item: &ast::Item, - push: Box)>); + push: &mut FnMut(P)); } impl ItemDecorator for F - where F : Fn(&mut ExtCtxt, Span, &ast::MetaItem, &ast::Item, Box)>) + where F : Fn(&mut ExtCtxt, Span, &ast::MetaItem, &ast::Item, &mut FnMut(P)) { fn expand(&self, ecx: &mut ExtCtxt, sp: Span, meta_item: &ast::MetaItem, item: &ast::Item, - push: Box)>) { + push: &mut FnMut(P)) { (*self)(ecx, sp, meta_item, item, push) } } diff --git a/src/libsyntax/ext/deriving/mod.rs b/src/libsyntax/ext/deriving/mod.rs index 9c3fa58ad0960b825d445a1968778741b33fa204..0ed9e85e57677a19f52fbf890d003032e078a41c 100644 --- a/src/libsyntax/ext/deriving/mod.rs +++ b/src/libsyntax/ext/deriving/mod.rs @@ -72,7 +72,7 @@ pub fn expand_deprecated_deriving(cx: &mut ExtCtxt, span: Span, _: &MetaItem, _: &Item, - _: Box)>) { + _: &mut FnMut(P)) { cx.span_err(span, "`deriving` has been renamed to `derive`"); } @@ -80,7 +80,7 @@ pub fn expand_meta_derive(cx: &mut ExtCtxt, _span: Span, mitem: &MetaItem, item: &Item, - mut push: Box)>) { + push: &mut FnMut(P)) { match mitem.node { MetaNameValue(_, ref l) => { cx.span_err(l.span, "unexpected value in `derive`"); diff --git a/src/libsyntax/ext/expand.rs b/src/libsyntax/ext/expand.rs index 131bbc4100546985d5436f725fa86c997eef206d..fd98f42c2ab03c0693c21e2f75b74980fdf4f7ec 100644 --- a/src/libsyntax/ext/expand.rs +++ b/src/libsyntax/ext/expand.rs @@ -363,7 +363,7 @@ fn expand_mac_invoc(mac: ast::Mac, span: codemap::Span, mark_thunk: G, fld: &mut MacroExpander) -> Option where - F: FnOnce(Box) -> Option, + F: for<'a> FnOnce(Box) -> Option, G: FnOnce(T, Mrk) -> T, { match mac.node { @@ -1102,9 +1102,10 @@ fn expand_annotatable(a: Annotatable, // but that double-mut-borrows fld let mut items: SmallVector> = SmallVector::zero(); dec.expand(fld.cx, attr.span, &*attr.node.value, &**it, - box |item| items.push(item)); - decorator_items.extend(items.into_iter() - .flat_map(|item| expand_item(item, fld).into_iter())); + &mut |item| items.push(item)); + decorator_items.extend( + items.into_iter() + .flat_map(|item| expand_item(item, fld).into_iter())); fld.cx.bt_pop(); }