@@ -77,7 +77,7 @@ use std::mem::replace;
7777use std:: rc:: Rc ;
7878
7979use resolve_imports:: { ImportDirective , NameResolution } ;
80- use macros:: { InvocationData , LegacyBinding , LegacyScope } ;
80+ use macros:: { InvocationData , LegacyBinding } ;
8181
8282// NB: This module needs to be declared first so diagnostics are
8383// registered before they are used.
@@ -1067,7 +1067,7 @@ pub struct Resolver<'a> {
10671067
10681068 privacy_errors : Vec < PrivacyError < ' a > > ,
10691069 ambiguity_errors : Vec < AmbiguityError < ' a > > ,
1070- disallowed_shadowing : Vec < ( Name , Span , LegacyScope < ' a > ) > ,
1070+ disallowed_shadowing : Vec < & ' a LegacyBinding < ' a > > ,
10711071
10721072 arenas : & ' a ResolverArenas < ' a > ,
10731073 dummy_binding : & ' a NameBinding < ' a > ,
@@ -3364,11 +3364,11 @@ impl<'a> Resolver<'a> {
33643364
33653365 fn report_shadowing_errors ( & mut self ) {
33663366 let mut reported_errors = FnvHashSet ( ) ;
3367- for ( name , span , scope ) in replace ( & mut self . disallowed_shadowing , Vec :: new ( ) ) {
3368- if self . resolve_macro_name ( scope , name, false ) . is_some ( ) &&
3369- reported_errors. insert ( ( name, span) ) {
3370- let msg = format ! ( "`{}` is already in scope" , name) ;
3371- self . session . struct_span_err ( span, & msg)
3367+ for binding in replace ( & mut self . disallowed_shadowing , Vec :: new ( ) ) {
3368+ if self . resolve_macro_name ( binding . parent , binding . name , false ) . is_some ( ) &&
3369+ reported_errors. insert ( ( binding . name , binding . span ) ) {
3370+ let msg = format ! ( "`{}` is already in scope" , binding . name) ;
3371+ self . session . struct_span_err ( binding . span , & msg)
33723372 . note ( "macro-expanded `macro_rules!`s may not shadow \
33733373 existing macros (see RFC 1560)")
33743374 . emit ( ) ;
0 commit comments