@@ -411,6 +411,7 @@ impl<'a, 'b> MacroExpander<'a, 'b> {
411411 format : MacroAttribute ( Symbol :: intern ( & format ! ( "{}" , attr. path) ) ) ,
412412 span : None ,
413413 allow_internal_unstable : false ,
414+ allow_internal_unsafe : false ,
414415 }
415416 } ) ;
416417
@@ -458,7 +459,9 @@ impl<'a, 'b> MacroExpander<'a, 'b> {
458459 let path = & mac. node . path ;
459460
460461 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| {
462465 if ident. name != keywords:: Invalid . name ( ) {
463466 return Err ( format ! ( "macro {}! expects no ident argument, given '{}'" , path, ident) ) ;
464467 }
@@ -467,7 +470,8 @@ impl<'a, 'b> MacroExpander<'a, 'b> {
467470 callee : NameAndSpan {
468471 format : MacroBang ( Symbol :: intern ( & format ! ( "{}" , path) ) ) ,
469472 span : def_site_span,
470- allow_internal_unstable : allow_internal_unstable,
473+ allow_internal_unstable,
474+ allow_internal_unsafe,
471475 } ,
472476 } ) ;
473477 Ok ( ( ) )
@@ -476,20 +480,26 @@ impl<'a, 'b> MacroExpander<'a, 'b> {
476480 let opt_expanded = match * ext {
477481 DeclMacro ( ref expand, def_span) => {
478482 if let Err ( msg) = validate_and_set_expn_info ( def_span. map ( |( _, s) | s) ,
479- false ) {
483+ false , false ) {
480484 self . cx . span_err ( path. span , & msg) ;
481485 return kind. dummy ( span) ;
482486 }
483487 kind. make_from ( expand. expand ( self . cx , span, mac. node . stream ( ) ) )
484488 }
485489
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+ } => {
487496 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) {
489499 self . cx . span_err ( path. span , & msg) ;
490500 return kind. dummy ( span) ;
491501 }
492- kind. make_from ( expandfun . expand ( self . cx , span, mac. node . stream ( ) ) )
502+ kind. make_from ( expander . expand ( self . cx , span, mac. node . stream ( ) ) )
493503 }
494504
495505 IdentTT ( ref expander, tt_span, allow_internal_unstable) => {
@@ -504,7 +514,8 @@ impl<'a, 'b> MacroExpander<'a, 'b> {
504514 callee : NameAndSpan {
505515 format : MacroBang ( Symbol :: intern ( & format ! ( "{}" , path) ) ) ,
506516 span : tt_span,
507- allow_internal_unstable : allow_internal_unstable,
517+ allow_internal_unstable,
518+ allow_internal_unsafe : false ,
508519 }
509520 } ) ;
510521
@@ -540,6 +551,7 @@ impl<'a, 'b> MacroExpander<'a, 'b> {
540551 span : None ,
541552 // FIXME probably want to follow macro_rules macros here.
542553 allow_internal_unstable : false ,
554+ allow_internal_unsafe : false ,
543555 } ,
544556 } ) ;
545557
@@ -578,6 +590,7 @@ impl<'a, 'b> MacroExpander<'a, 'b> {
578590 format : MacroAttribute ( pretty_name) ,
579591 span : None ,
580592 allow_internal_unstable : false ,
593+ allow_internal_unsafe : false ,
581594 }
582595 } ;
583596
0 commit comments