@@ -411,6 +411,7 @@ impl<'a, 'b> MacroExpander<'a, 'b> {
411
411
format : MacroAttribute ( Symbol :: intern ( & format ! ( "{}" , attr. path) ) ) ,
412
412
span : None ,
413
413
allow_internal_unstable : false ,
414
+ allow_internal_unsafe : false ,
414
415
}
415
416
} ) ;
416
417
@@ -458,7 +459,9 @@ impl<'a, 'b> MacroExpander<'a, 'b> {
458
459
let path = & mac. node . path ;
459
460
460
461
let ident = ident. unwrap_or_else ( || keywords:: Invalid . ident ( ) ) ;
461
- let validate_and_set_expn_info = |def_site_span, allow_internal_unstable| {
462
+ let validate_and_set_expn_info = |def_site_span,
463
+ allow_internal_unstable,
464
+ allow_internal_unsafe| {
462
465
if ident. name != keywords:: Invalid . name ( ) {
463
466
return Err ( format ! ( "macro {}! expects no ident argument, given '{}'" , path, ident) ) ;
464
467
}
@@ -467,7 +470,8 @@ impl<'a, 'b> MacroExpander<'a, 'b> {
467
470
callee : NameAndSpan {
468
471
format : MacroBang ( Symbol :: intern ( & format ! ( "{}" , path) ) ) ,
469
472
span : def_site_span,
470
- allow_internal_unstable : allow_internal_unstable,
473
+ allow_internal_unstable,
474
+ allow_internal_unsafe,
471
475
} ,
472
476
} ) ;
473
477
Ok ( ( ) )
@@ -476,20 +480,26 @@ impl<'a, 'b> MacroExpander<'a, 'b> {
476
480
let opt_expanded = match * ext {
477
481
DeclMacro ( ref expand, def_span) => {
478
482
if let Err ( msg) = validate_and_set_expn_info ( def_span. map ( |( _, s) | s) ,
479
- false ) {
483
+ false , false ) {
480
484
self . cx . span_err ( path. span , & msg) ;
481
485
return kind. dummy ( span) ;
482
486
}
483
487
kind. make_from ( expand. expand ( self . cx , span, mac. node . stream ( ) ) )
484
488
}
485
489
486
- NormalTT ( ref expandfun, def_info, allow_internal_unstable) => {
490
+ NormalTT {
491
+ ref expander,
492
+ def_info,
493
+ allow_internal_unstable,
494
+ allow_internal_unsafe
495
+ } => {
487
496
if let Err ( msg) = validate_and_set_expn_info ( def_info. map ( |( _, s) | s) ,
488
- allow_internal_unstable) {
497
+ allow_internal_unstable,
498
+ allow_internal_unsafe) {
489
499
self . cx . span_err ( path. span , & msg) ;
490
500
return kind. dummy ( span) ;
491
501
}
492
- kind. make_from ( expandfun . expand ( self . cx , span, mac. node . stream ( ) ) )
502
+ kind. make_from ( expander . expand ( self . cx , span, mac. node . stream ( ) ) )
493
503
}
494
504
495
505
IdentTT ( ref expander, tt_span, allow_internal_unstable) => {
@@ -504,7 +514,8 @@ impl<'a, 'b> MacroExpander<'a, 'b> {
504
514
callee : NameAndSpan {
505
515
format : MacroBang ( Symbol :: intern ( & format ! ( "{}" , path) ) ) ,
506
516
span : tt_span,
507
- allow_internal_unstable : allow_internal_unstable,
517
+ allow_internal_unstable,
518
+ allow_internal_unsafe : false ,
508
519
}
509
520
} ) ;
510
521
@@ -540,6 +551,7 @@ impl<'a, 'b> MacroExpander<'a, 'b> {
540
551
span : None ,
541
552
// FIXME probably want to follow macro_rules macros here.
542
553
allow_internal_unstable : false ,
554
+ allow_internal_unsafe : false ,
543
555
} ,
544
556
} ) ;
545
557
@@ -578,6 +590,7 @@ impl<'a, 'b> MacroExpander<'a, 'b> {
578
590
format : MacroAttribute ( pretty_name) ,
579
591
span : None ,
580
592
allow_internal_unstable : false ,
593
+ allow_internal_unsafe : false ,
581
594
}
582
595
} ;
583
596
0 commit comments