@@ -125,18 +125,17 @@ pub struct NameResolution<'a> {
125125
126126impl < ' a > NameResolution < ' a > {
127127 fn try_define ( & mut self , binding : & ' a NameBinding < ' a > ) -> Result < ( ) , & ' a NameBinding < ' a > > {
128- match self . binding {
129- Some ( old_binding) if !old_binding. defined_with ( DefModifiers :: PRELUDE ) => {
130- if binding. defined_with ( DefModifiers :: GLOB_IMPORTED ) {
131- self . duplicate_globs . push ( binding) ;
132- } else if old_binding. defined_with ( DefModifiers :: GLOB_IMPORTED ) {
133- self . duplicate_globs . push ( old_binding) ;
134- self . binding = Some ( binding) ;
135- } else {
136- return Err ( old_binding) ;
137- }
128+ if let Some ( old_binding) = self . binding {
129+ if binding. defined_with ( DefModifiers :: GLOB_IMPORTED ) {
130+ self . duplicate_globs . push ( binding) ;
131+ } else if old_binding. defined_with ( DefModifiers :: GLOB_IMPORTED ) {
132+ self . duplicate_globs . push ( old_binding) ;
133+ self . binding = Some ( binding) ;
134+ } else {
135+ return Err ( old_binding) ;
138136 }
139- _ => self . binding = Some ( binding) ,
137+ } else {
138+ self . binding = Some ( binding) ;
140139 }
141140
142141 Ok ( ( ) )
@@ -160,7 +159,6 @@ impl<'a> NameResolution<'a> {
160159 fn try_result ( & self , allow_private_imports : bool )
161160 -> Option < ResolveResult < & ' a NameBinding < ' a > > > {
162161 match self . result ( allow_private_imports) {
163- Success ( binding) if binding. defined_with ( DefModifiers :: PRELUDE ) => None ,
164162 Failed ( _) => None ,
165163 result @ _ => Some ( result) ,
166164 }
@@ -192,8 +190,6 @@ impl<'a> NameResolution<'a> {
192190 } ;
193191
194192 for duplicate_glob in self . duplicate_globs . iter ( ) {
195- if duplicate_glob. defined_with ( DefModifiers :: PRELUDE ) { continue }
196-
197193 // FIXME #31337: We currently allow items to shadow glob-imported re-exports.
198194 if !binding. is_import ( ) {
199195 if let NameBindingKind :: Import { binding, .. } = duplicate_glob. kind {
@@ -360,7 +356,7 @@ impl<'a, 'b:'a, 'tcx:'b> ImportResolver<'a, 'b, 'tcx> {
360356 // resolution for it so that later resolve stages won't complain.
361357 if let SingleImport { target, .. } = e. import_directive . subclass {
362358 let dummy_binding = self . resolver . arenas . alloc_name_binding ( NameBinding {
363- modifiers : DefModifiers :: PRELUDE ,
359+ modifiers : DefModifiers :: GLOB_IMPORTED ,
364360 kind : NameBindingKind :: Def ( Def :: Err ) ,
365361 span : None ,
366362 } ) ;
0 commit comments