@@ -153,18 +153,18 @@ pub trait MultiItemDecorator {
153153 sp : Span ,
154154 meta_item : & ast:: MetaItem ,
155155 item : & Annotatable ,
156- push : & mut FnMut ( Annotatable ) ) ;
156+ push : & mut dyn FnMut ( Annotatable ) ) ;
157157}
158158
159159impl < F > MultiItemDecorator for F
160- where F : Fn ( & mut ExtCtxt , Span , & ast:: MetaItem , & Annotatable , & mut FnMut ( Annotatable ) )
160+ where F : Fn ( & mut ExtCtxt , Span , & ast:: MetaItem , & Annotatable , & mut dyn FnMut ( Annotatable ) )
161161{
162162 fn expand ( & self ,
163163 ecx : & mut ExtCtxt ,
164164 sp : Span ,
165165 meta_item : & ast:: MetaItem ,
166166 item : & Annotatable ,
167- push : & mut FnMut ( Annotatable ) ) {
167+ push : & mut dyn FnMut ( Annotatable ) ) {
168168 ( * self ) ( ecx, sp, meta_item, item, push)
169169 }
170170}
@@ -247,18 +247,19 @@ impl<F> AttrProcMacro for F
247247/// Represents a thing that maps token trees to Macro Results
248248pub trait TTMacroExpander {
249249 fn expand < ' cx > ( & self , ecx : & ' cx mut ExtCtxt , span : Span , input : TokenStream )
250- -> Box < MacResult +' cx > ;
250+ -> Box < dyn MacResult +' cx > ;
251251}
252252
253253pub type MacroExpanderFn =
254254 for <' cx > fn ( & ' cx mut ExtCtxt , Span , & [ tokenstream:: TokenTree ] )
255- -> Box < MacResult +' cx > ;
255+ -> Box < dyn MacResult +' cx > ;
256256
257257impl < F > TTMacroExpander for F
258- where F : for < ' cx > Fn ( & ' cx mut ExtCtxt , Span , & [ tokenstream:: TokenTree ] ) -> Box < MacResult +' cx >
258+ where F : for < ' cx > Fn ( & ' cx mut ExtCtxt , Span , & [ tokenstream:: TokenTree ] )
259+ -> Box < dyn MacResult +' cx >
259260{
260261 fn expand < ' cx > ( & self , ecx : & ' cx mut ExtCtxt , span : Span , input : TokenStream )
261- -> Box < MacResult +' cx > {
262+ -> Box < dyn MacResult +' cx > {
262263 struct AvoidInterpolatedIdents ;
263264
264265 impl Folder for AvoidInterpolatedIdents {
@@ -289,23 +290,23 @@ pub trait IdentMacroExpander {
289290 sp : Span ,
290291 ident : ast:: Ident ,
291292 token_tree : Vec < tokenstream:: TokenTree > )
292- -> Box < MacResult +' cx > ;
293+ -> Box < dyn MacResult +' cx > ;
293294}
294295
295296pub type IdentMacroExpanderFn =
296297 for <' cx > fn ( & ' cx mut ExtCtxt , Span , ast:: Ident , Vec < tokenstream:: TokenTree > )
297- -> Box < MacResult +' cx > ;
298+ -> Box < dyn MacResult +' cx > ;
298299
299300impl < F > IdentMacroExpander for F
300301 where F : for < ' cx > Fn ( & ' cx mut ExtCtxt , Span , ast:: Ident ,
301- Vec < tokenstream:: TokenTree > ) -> Box < MacResult +' cx >
302+ Vec < tokenstream:: TokenTree > ) -> Box < dyn MacResult +' cx >
302303{
303304 fn expand < ' cx > ( & self ,
304305 cx : & ' cx mut ExtCtxt ,
305306 sp : Span ,
306307 ident : ast:: Ident ,
307308 token_tree : Vec < tokenstream:: TokenTree > )
308- -> Box < MacResult +' cx >
309+ -> Box < dyn MacResult +' cx >
309310 {
310311 ( * self ) ( cx, sp, ident, token_tree)
311312 }
@@ -378,7 +379,7 @@ macro_rules! make_MacEager {
378379
379380 impl MacEager {
380381 $(
381- pub fn $fld( v: $t) -> Box <MacResult > {
382+ pub fn $fld( v: $t) -> Box <dyn MacResult > {
382383 Box :: new( MacEager {
383384 $fld: Some ( v) ,
384385 ..Default :: default ( )
@@ -462,7 +463,7 @@ impl DummyResult {
462463 ///
463464 /// Use this as a return value after hitting any errors and
464465 /// calling `span_err`.
465- pub fn any ( sp : Span ) -> Box < MacResult +' static > {
466+ pub fn any ( sp : Span ) -> Box < dyn MacResult +' static > {
466467 Box :: new ( DummyResult { expr_only : false , span : sp } )
467468 }
468469
@@ -471,7 +472,7 @@ impl DummyResult {
471472 /// Use this for macros that must expand to an expression, so even
472473 /// if an error is encountered internally, the user will receive
473474 /// an error that they also used it in the wrong place.
474- pub fn expr ( sp : Span ) -> Box < MacResult +' static > {
475+ pub fn expr ( sp : Span ) -> Box < dyn MacResult +' static > {
475476 Box :: new ( DummyResult { expr_only : true , span : sp } )
476477 }
477478
@@ -559,7 +560,7 @@ impl MacResult for DummyResult {
559560}
560561
561562pub type BuiltinDeriveFn =
562- for <' cx > fn ( & ' cx mut ExtCtxt , Span , & MetaItem , & Annotatable , & mut FnMut ( Annotatable ) ) ;
563+ for <' cx > fn ( & ' cx mut ExtCtxt , Span , & MetaItem , & Annotatable , & mut dyn FnMut ( Annotatable ) ) ;
563564
564565/// Represents different kinds of macro invocations that can be resolved.
565566#[ derive( Clone , Copy , PartialEq , Eq , RustcEncodable , RustcDecodable , Hash , Debug ) ]
@@ -590,15 +591,15 @@ pub enum SyntaxExtension {
590591 /// `#[derive(...)]` is a `MultiItemDecorator`.
591592 ///
592593 /// Prefer ProcMacro or MultiModifier since they are more flexible.
593- MultiDecorator ( Box < MultiItemDecorator + sync:: Sync + sync:: Send > ) ,
594+ MultiDecorator ( Box < dyn MultiItemDecorator + sync:: Sync + sync:: Send > ) ,
594595
595596 /// A syntax extension that is attached to an item and modifies it
596597 /// in-place. Also allows decoration, i.e., creating new items.
597- MultiModifier ( Box < MultiItemModifier + sync:: Sync + sync:: Send > ) ,
598+ MultiModifier ( Box < dyn MultiItemModifier + sync:: Sync + sync:: Send > ) ,
598599
599600 /// A function-like procedural macro. TokenStream -> TokenStream.
600601 ProcMacro {
601- expander : Box < ProcMacro + sync:: Sync + sync:: Send > ,
602+ expander : Box < dyn ProcMacro + sync:: Sync + sync:: Send > ,
602603 allow_internal_unstable : bool ,
603604 edition : Edition ,
604605 } ,
@@ -607,13 +608,13 @@ pub enum SyntaxExtension {
607608 /// The first TokenSteam is the attribute, the second is the annotated item.
608609 /// Allows modification of the input items and adding new items, similar to
609610 /// MultiModifier, but uses TokenStreams, rather than AST nodes.
610- AttrProcMacro ( Box < AttrProcMacro + sync:: Sync + sync:: Send > , Edition ) ,
611+ AttrProcMacro ( Box < dyn AttrProcMacro + sync:: Sync + sync:: Send > , Edition ) ,
611612
612613 /// A normal, function-like syntax extension.
613614 ///
614615 /// `bytes!` is a `NormalTT`.
615616 NormalTT {
616- expander : Box < TTMacroExpander + sync:: Sync + sync:: Send > ,
617+ expander : Box < dyn TTMacroExpander + sync:: Sync + sync:: Send > ,
617618 def_info : Option < ( ast:: NodeId , Span ) > ,
618619 /// Whether the contents of the macro can
619620 /// directly use `#[unstable]` things (true == yes).
@@ -633,21 +634,21 @@ pub enum SyntaxExtension {
633634 /// A function-like syntax extension that has an extra ident before
634635 /// the block.
635636 ///
636- IdentTT ( Box < IdentMacroExpander + sync:: Sync + sync:: Send > , Option < Span > , bool ) ,
637+ IdentTT ( Box < dyn IdentMacroExpander + sync:: Sync + sync:: Send > , Option < Span > , bool ) ,
637638
638639 /// An attribute-like procedural macro. TokenStream -> TokenStream.
639640 /// The input is the annotated item.
640641 /// Allows generating code to implement a Trait for a given struct
641642 /// or enum item.
642- ProcMacroDerive ( Box < MultiItemModifier + sync:: Sync + sync:: Send > ,
643+ ProcMacroDerive ( Box < dyn MultiItemModifier + sync:: Sync + sync:: Send > ,
643644 Vec < Symbol > /* inert attribute names */ , Edition ) ,
644645
645646 /// An attribute-like procedural macro that derives a builtin trait.
646647 BuiltinDerive ( BuiltinDeriveFn ) ,
647648
648649 /// A declarative macro, e.g. `macro m() {}`.
649650 DeclMacro {
650- expander : Box < TTMacroExpander + sync:: Sync + sync:: Send > ,
651+ expander : Box < dyn TTMacroExpander + sync:: Sync + sync:: Send > ,
651652 def_info : Option < ( ast:: NodeId , Span ) > ,
652653 is_transparent : bool ,
653654 edition : Edition ,
@@ -778,7 +779,7 @@ pub struct ExtCtxt<'a> {
778779 pub parse_sess : & ' a parse:: ParseSess ,
779780 pub ecfg : expand:: ExpansionConfig < ' a > ,
780781 pub root_path : PathBuf ,
781- pub resolver : & ' a mut Resolver ,
782+ pub resolver : & ' a mut dyn Resolver ,
782783 pub resolve_err_count : usize ,
783784 pub current_expansion : ExpansionData ,
784785 pub expansions : HashMap < Span , Vec < String > > ,
@@ -787,7 +788,7 @@ pub struct ExtCtxt<'a> {
787788impl < ' a > ExtCtxt < ' a > {
788789 pub fn new ( parse_sess : & ' a parse:: ParseSess ,
789790 ecfg : expand:: ExpansionConfig < ' a > ,
790- resolver : & ' a mut Resolver )
791+ resolver : & ' a mut dyn Resolver )
791792 -> ExtCtxt < ' a > {
792793 ExtCtxt {
793794 parse_sess,
0 commit comments