@@ -15,7 +15,7 @@ use syntax::ast::{self, Ident};
1515use syntax:: attr;
1616use syntax:: errors:: DiagnosticBuilder ;
1717use syntax:: ext:: base:: { self , Determinacy } ;
18- use syntax:: ext:: base:: { MacroKind , SyntaxExtension } ;
18+ use syntax:: ext:: base:: { MacroKind , SyntaxExtension , SyntaxExtensionKind } ;
1919use syntax:: ext:: expand:: { AstFragment , Invocation , InvocationKind } ;
2020use syntax:: ext:: hygiene:: Mark ;
2121use syntax:: ext:: tt:: macro_rules;
@@ -174,7 +174,7 @@ impl<'a> base::Resolver for Resolver<'a> {
174174 krate : CrateNum :: BuiltinMacros ,
175175 index : DefIndex :: from ( self . macro_map . len ( ) ) ,
176176 } ;
177- let kind = ext. kind ( ) ;
177+ let kind = ext. macro_kind ( ) ;
178178 self . macro_map . insert ( def_id, ext) ;
179179 let binding = self . arenas . alloc_name_binding ( NameBinding {
180180 kind : NameBindingKind :: Res ( Res :: Def ( DefKind :: Macro ( kind) , def_id) , false ) ,
@@ -211,7 +211,8 @@ impl<'a> base::Resolver for Resolver<'a> {
211211 Ok ( ( res, ext) ) => ( res, ext) ,
212212 Err ( Determinacy :: Determined ) if kind == MacroKind :: Attr => {
213213 // Replace unresolved attributes with used inert attributes for better recovery.
214- return Ok ( Some ( Lrc :: new ( SyntaxExtension :: NonMacroAttr { mark_used : true } ) ) ) ;
214+ let kind = SyntaxExtensionKind :: NonMacroAttr { mark_used : true } ;
215+ return Ok ( Some ( Lrc :: new ( SyntaxExtension :: default ( kind, self . session . edition ( ) ) ) ) ) ;
215216 }
216217 Err ( determinacy) => return Err ( determinacy) ,
217218 } ;
@@ -226,7 +227,7 @@ impl<'a> base::Resolver for Resolver<'a> {
226227 self . macro_def_scope ( invoc. expansion_data . mark ) . normal_ancestor_id ;
227228 self . definitions . add_parent_module_of_macro_def ( invoc. expansion_data . mark ,
228229 normal_module_def_id) ;
229- invoc. expansion_data . mark . set_default_transparency ( ext. default_transparency ( ) ) ;
230+ invoc. expansion_data . mark . set_default_transparency ( ext. default_transparency ) ;
230231 }
231232
232233 Ok ( Some ( ext) )
@@ -241,11 +242,7 @@ impl<'a> base::Resolver for Resolver<'a> {
241242
242243 fn check_unused_macros ( & self ) {
243244 for did in self . unused_macros . iter ( ) {
244- let id_span = match * self . macro_map [ did] {
245- SyntaxExtension :: LegacyBang { def_info, .. } => def_info,
246- _ => None ,
247- } ;
248- if let Some ( ( id, span) ) = id_span {
245+ if let Some ( ( id, span) ) = self . macro_map [ did] . def_info {
249246 let lint = lint:: builtin:: UNUSED_MACROS ;
250247 let msg = "unused macro definition" ;
251248 self . session . buffer_lint ( lint, id, span, msg) ;
@@ -585,17 +582,12 @@ impl<'a> Resolver<'a> {
585582 let parent_scope = ParentScope { derives : Vec :: new ( ) , ..* parent_scope } ;
586583 match self . resolve_macro_to_res ( derive, MacroKind :: Derive ,
587584 & parent_scope, true , force) {
588- Ok ( ( _, ext) ) => {
589- if let SyntaxExtension :: Derive ( _, helpers, _) = & * ext {
590- if helpers. contains ( & ident. name ) {
591- let binding =
592- ( Res :: NonMacroAttr ( NonMacroAttrKind :: DeriveHelper ) ,
593- ty:: Visibility :: Public , derive. span , Mark :: root ( ) )
594- . to_name_binding ( self . arenas ) ;
595- result = Ok ( ( binding, Flags :: empty ( ) ) ) ;
596- break ;
597- }
598- }
585+ Ok ( ( _, ext) ) => if ext. helper_attrs . contains ( & ident. name ) {
586+ let binding = ( Res :: NonMacroAttr ( NonMacroAttrKind :: DeriveHelper ) ,
587+ ty:: Visibility :: Public , derive. span , Mark :: root ( ) )
588+ . to_name_binding ( self . arenas ) ;
589+ result = Ok ( ( binding, Flags :: empty ( ) ) ) ;
590+ break ;
599591 }
600592 Err ( Determinacy :: Determined ) => { }
601593 Err ( Determinacy :: Undetermined ) =>
0 commit comments