@@ -153,18 +153,18 @@ pub trait MultiItemDecorator {
153
153
sp : Span ,
154
154
meta_item : & ast:: MetaItem ,
155
155
item : & Annotatable ,
156
- push : & mut FnMut ( Annotatable ) ) ;
156
+ push : & mut dyn FnMut ( Annotatable ) ) ;
157
157
}
158
158
159
159
impl < 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 ) )
161
161
{
162
162
fn expand ( & self ,
163
163
ecx : & mut ExtCtxt ,
164
164
sp : Span ,
165
165
meta_item : & ast:: MetaItem ,
166
166
item : & Annotatable ,
167
- push : & mut FnMut ( Annotatable ) ) {
167
+ push : & mut dyn FnMut ( Annotatable ) ) {
168
168
( * self ) ( ecx, sp, meta_item, item, push)
169
169
}
170
170
}
@@ -247,18 +247,18 @@ impl<F> AttrProcMacro for F
247
247
/// Represents a thing that maps token trees to Macro Results
248
248
pub trait TTMacroExpander {
249
249
fn expand < ' cx > ( & self , ecx : & ' cx mut ExtCtxt , span : Span , input : TokenStream )
250
- -> Box < MacResult +' cx > ;
250
+ -> Box < dyn MacResult +' cx > ;
251
251
}
252
252
253
253
pub type MacroExpanderFn =
254
254
for <' cx > fn ( & ' cx mut ExtCtxt , Span , & [ tokenstream:: TokenTree ] )
255
- -> Box < MacResult +' cx > ;
255
+ -> Box < dyn MacResult +' cx > ;
256
256
257
257
impl < 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 ] ) -> Box < dyn MacResult +' cx >
259
259
{
260
260
fn expand < ' cx > ( & self , ecx : & ' cx mut ExtCtxt , span : Span , input : TokenStream )
261
- -> Box < MacResult +' cx > {
261
+ -> Box < dyn MacResult +' cx > {
262
262
struct AvoidInterpolatedIdents ;
263
263
264
264
impl Folder for AvoidInterpolatedIdents {
@@ -289,23 +289,23 @@ pub trait IdentMacroExpander {
289
289
sp : Span ,
290
290
ident : ast:: Ident ,
291
291
token_tree : Vec < tokenstream:: TokenTree > )
292
- -> Box < MacResult +' cx > ;
292
+ -> Box < dyn MacResult +' cx > ;
293
293
}
294
294
295
295
pub type IdentMacroExpanderFn =
296
296
for <' cx > fn ( & ' cx mut ExtCtxt , Span , ast:: Ident , Vec < tokenstream:: TokenTree > )
297
- -> Box < MacResult +' cx > ;
297
+ -> Box < dyn MacResult +' cx > ;
298
298
299
299
impl < F > IdentMacroExpander for F
300
300
where F : for < ' cx > Fn ( & ' cx mut ExtCtxt , Span , ast:: Ident ,
301
- Vec < tokenstream:: TokenTree > ) -> Box < MacResult +' cx >
301
+ Vec < tokenstream:: TokenTree > ) -> Box < dyn MacResult +' cx >
302
302
{
303
303
fn expand < ' cx > ( & self ,
304
304
cx : & ' cx mut ExtCtxt ,
305
305
sp : Span ,
306
306
ident : ast:: Ident ,
307
307
token_tree : Vec < tokenstream:: TokenTree > )
308
- -> Box < MacResult +' cx >
308
+ -> Box < dyn MacResult +' cx >
309
309
{
310
310
( * self ) ( cx, sp, ident, token_tree)
311
311
}
@@ -378,7 +378,7 @@ macro_rules! make_MacEager {
378
378
379
379
impl MacEager {
380
380
$(
381
- pub fn $fld( v: $t) -> Box <MacResult > {
381
+ pub fn $fld( v: $t) -> Box <dyn MacResult > {
382
382
Box :: new( MacEager {
383
383
$fld: Some ( v) ,
384
384
..Default :: default ( )
@@ -462,7 +462,7 @@ impl DummyResult {
462
462
///
463
463
/// Use this as a return value after hitting any errors and
464
464
/// calling `span_err`.
465
- pub fn any ( sp : Span ) -> Box < MacResult +' static > {
465
+ pub fn any ( sp : Span ) -> Box < dyn MacResult +' static > {
466
466
Box :: new ( DummyResult { expr_only : false , span : sp } )
467
467
}
468
468
@@ -471,7 +471,7 @@ impl DummyResult {
471
471
/// Use this for macros that must expand to an expression, so even
472
472
/// if an error is encountered internally, the user will receive
473
473
/// an error that they also used it in the wrong place.
474
- pub fn expr ( sp : Span ) -> Box < MacResult +' static > {
474
+ pub fn expr ( sp : Span ) -> Box < dyn MacResult +' static > {
475
475
Box :: new ( DummyResult { expr_only : true , span : sp } )
476
476
}
477
477
@@ -559,7 +559,7 @@ impl MacResult for DummyResult {
559
559
}
560
560
561
561
pub type BuiltinDeriveFn =
562
- for <' cx > fn ( & ' cx mut ExtCtxt , Span , & MetaItem , & Annotatable , & mut FnMut ( Annotatable ) ) ;
562
+ for <' cx > fn ( & ' cx mut ExtCtxt , Span , & MetaItem , & Annotatable , & mut dyn FnMut ( Annotatable ) ) ;
563
563
564
564
/// Represents different kinds of macro invocations that can be resolved.
565
565
#[ derive( Clone , Copy , PartialEq , Eq , RustcEncodable , RustcDecodable , Hash , Debug ) ]
@@ -590,15 +590,15 @@ pub enum SyntaxExtension {
590
590
/// `#[derive(...)]` is a `MultiItemDecorator`.
591
591
///
592
592
/// Prefer ProcMacro or MultiModifier since they are more flexible.
593
- MultiDecorator ( Box < MultiItemDecorator + sync:: Sync + sync:: Send > ) ,
593
+ MultiDecorator ( Box < dyn MultiItemDecorator + sync:: Sync + sync:: Send > ) ,
594
594
595
595
/// A syntax extension that is attached to an item and modifies it
596
596
/// in-place. Also allows decoration, i.e., creating new items.
597
- MultiModifier ( Box < MultiItemModifier + sync:: Sync + sync:: Send > ) ,
597
+ MultiModifier ( Box < dyn MultiItemModifier + sync:: Sync + sync:: Send > ) ,
598
598
599
599
/// A function-like procedural macro. TokenStream -> TokenStream.
600
600
ProcMacro {
601
- expander : Box < ProcMacro + sync:: Sync + sync:: Send > ,
601
+ expander : Box < dyn ProcMacro + sync:: Sync + sync:: Send > ,
602
602
allow_internal_unstable : bool ,
603
603
edition : Edition ,
604
604
} ,
@@ -607,13 +607,13 @@ pub enum SyntaxExtension {
607
607
/// The first TokenSteam is the attribute, the second is the annotated item.
608
608
/// Allows modification of the input items and adding new items, similar to
609
609
/// MultiModifier, but uses TokenStreams, rather than AST nodes.
610
- AttrProcMacro ( Box < AttrProcMacro + sync:: Sync + sync:: Send > , Edition ) ,
610
+ AttrProcMacro ( Box < dyn AttrProcMacro + sync:: Sync + sync:: Send > , Edition ) ,
611
611
612
612
/// A normal, function-like syntax extension.
613
613
///
614
614
/// `bytes!` is a `NormalTT`.
615
615
NormalTT {
616
- expander : Box < TTMacroExpander + sync:: Sync + sync:: Send > ,
616
+ expander : Box < dyn TTMacroExpander + sync:: Sync + sync:: Send > ,
617
617
def_info : Option < ( ast:: NodeId , Span ) > ,
618
618
/// Whether the contents of the macro can
619
619
/// directly use `#[unstable]` things (true == yes).
@@ -633,21 +633,21 @@ pub enum SyntaxExtension {
633
633
/// A function-like syntax extension that has an extra ident before
634
634
/// the block.
635
635
///
636
- IdentTT ( Box < IdentMacroExpander + sync:: Sync + sync:: Send > , Option < Span > , bool ) ,
636
+ IdentTT ( Box < dyn IdentMacroExpander + sync:: Sync + sync:: Send > , Option < Span > , bool ) ,
637
637
638
638
/// An attribute-like procedural macro. TokenStream -> TokenStream.
639
639
/// The input is the annotated item.
640
640
/// Allows generating code to implement a Trait for a given struct
641
641
/// or enum item.
642
- ProcMacroDerive ( Box < MultiItemModifier + sync:: Sync + sync:: Send > ,
642
+ ProcMacroDerive ( Box < dyn MultiItemModifier + sync:: Sync + sync:: Send > ,
643
643
Vec < Symbol > /* inert attribute names */ , Edition ) ,
644
644
645
645
/// An attribute-like procedural macro that derives a builtin trait.
646
646
BuiltinDerive ( BuiltinDeriveFn ) ,
647
647
648
648
/// A declarative macro, e.g. `macro m() {}`.
649
649
DeclMacro {
650
- expander : Box < TTMacroExpander + sync:: Sync + sync:: Send > ,
650
+ expander : Box < dyn TTMacroExpander + sync:: Sync + sync:: Send > ,
651
651
def_info : Option < ( ast:: NodeId , Span ) > ,
652
652
is_transparent : bool ,
653
653
edition : Edition ,
@@ -784,7 +784,7 @@ pub struct ExtCtxt<'a> {
784
784
pub parse_sess : & ' a parse:: ParseSess ,
785
785
pub ecfg : expand:: ExpansionConfig < ' a > ,
786
786
pub root_path : PathBuf ,
787
- pub resolver : & ' a mut Resolver ,
787
+ pub resolver : & ' a mut dyn Resolver ,
788
788
pub resolve_err_count : usize ,
789
789
pub current_expansion : ExpansionData ,
790
790
pub expansions : HashMap < Span , Vec < String > > ,
@@ -793,7 +793,7 @@ pub struct ExtCtxt<'a> {
793
793
impl < ' a > ExtCtxt < ' a > {
794
794
pub fn new ( parse_sess : & ' a parse:: ParseSess ,
795
795
ecfg : expand:: ExpansionConfig < ' a > ,
796
- resolver : & ' a mut Resolver )
796
+ resolver : & ' a mut dyn Resolver )
797
797
-> ExtCtxt < ' a > {
798
798
ExtCtxt {
799
799
parse_sess,
0 commit comments