@@ -9,8 +9,7 @@ use crate::resolve_imports::ImportResolver;
99use rustc:: hir:: def_id:: { CrateNum , DefId , DefIndex , CRATE_DEF_INDEX } ;
1010use rustc:: hir:: def:: { self , DefKind , NonMacroAttrKind } ;
1111use rustc:: hir:: map:: { self , DefCollector } ;
12- use rustc:: { ty, lint} ;
13- use rustc:: { bug, span_bug} ;
12+ use rustc:: { ty, lint, span_bug} ;
1413use syntax:: ast:: { self , Ident } ;
1514use syntax:: attr;
1615use syntax:: errors:: DiagnosticBuilder ;
@@ -259,14 +258,10 @@ impl<'a> base::Resolver for Resolver<'a> {
259258 }
260259
261260 fn check_unused_macros ( & self ) {
262- for did in self . unused_macros . iter ( ) {
263- if let Some ( ( id, span) ) = self . macro_map [ did] . def_info {
264- let lint = lint:: builtin:: UNUSED_MACROS ;
265- let msg = "unused macro definition" ;
266- self . session . buffer_lint ( lint, id, span, msg) ;
267- } else {
268- bug ! ( "attempted to create unused macro error, but span not available" ) ;
269- }
261+ for ( & node_id, & span) in self . unused_macros . iter ( ) {
262+ self . session . buffer_lint (
263+ lint:: builtin:: UNUSED_MACROS , node_id, span, "unused macro definition"
264+ ) ;
270265 }
271266 }
272267}
@@ -323,7 +318,9 @@ impl<'a> Resolver<'a> {
323318
324319 match res {
325320 Res :: Def ( DefKind :: Macro ( macro_kind) , def_id) => {
326- self . unused_macros . remove ( & def_id) ;
321+ if let Some ( node_id) = self . definitions . as_local_node_id ( def_id) {
322+ self . unused_macros . remove ( & node_id) ;
323+ }
327324 if macro_kind == MacroKind :: ProcMacroStub {
328325 let msg = "can't use a procedural macro from the same crate that defines it" ;
329326 self . session . span_err ( path. span , msg) ;
@@ -1157,13 +1154,13 @@ impl<'a> Resolver<'a> {
11571154 ( res, vis, item. span , expansion, IsMacroExport ) ) ;
11581155 } else {
11591156 self . check_reserved_macro_name ( ident, res) ;
1160- self . unused_macros . insert ( def_id ) ;
1157+ self . unused_macros . insert ( item . id , item . span ) ;
11611158 }
11621159 } else {
11631160 let module = self . current_module ;
11641161 let vis = self . resolve_visibility ( & item. vis ) ;
11651162 if vis != ty:: Visibility :: Public {
1166- self . unused_macros . insert ( def_id ) ;
1163+ self . unused_macros . insert ( item . id , item . span ) ;
11671164 }
11681165 self . define ( module, ident, MacroNS , ( res, vis, item. span , expansion) ) ;
11691166 }
0 commit comments