@@ -3606,12 +3606,12 @@ impl<'a> Resolver<'a> {
3606
3606
}
3607
3607
}
3608
3608
3609
- fn report_conflict ( & mut self ,
3609
+ fn report_conflict < ' b > ( & mut self ,
3610
3610
parent : Module ,
3611
3611
ident : Ident ,
3612
3612
ns : Namespace ,
3613
- new_binding : & NameBinding ,
3614
- old_binding : & NameBinding ) {
3613
+ new_binding : & NameBinding < ' b > ,
3614
+ old_binding : & NameBinding < ' b > ) {
3615
3615
// Error on the second of two conflicting names
3616
3616
if old_binding. span . lo ( ) > new_binding. span . lo ( ) {
3617
3617
return self . report_conflict ( parent, ident, ns, old_binding, new_binding) ;
@@ -3683,6 +3683,26 @@ impl<'a> Resolver<'a> {
3683
3683
old_noun, old_kind, name) ) ;
3684
3684
}
3685
3685
3686
+ // See https://github.com/rust-lang/rust/issues/32354
3687
+ if old_binding. is_import ( ) || new_binding. is_import ( ) {
3688
+ let binding = if new_binding. is_import ( ) {
3689
+ new_binding
3690
+ } else {
3691
+ old_binding
3692
+ } ;
3693
+
3694
+ let cm = self . session . codemap ( ) ;
3695
+ let rename_msg = "You can use `as` to change the binding name of the import" ;
3696
+
3697
+ if let Ok ( snippet) = cm. span_to_snippet ( binding. span ) {
3698
+ err. span_suggestion ( binding. span ,
3699
+ rename_msg,
3700
+ format ! ( "{} as Other{}" , snippet, name) ) ;
3701
+ } else {
3702
+ err. span_label ( binding. span , rename_msg) ;
3703
+ }
3704
+ }
3705
+
3686
3706
err. emit ( ) ;
3687
3707
self . name_already_seen . insert ( name, span) ;
3688
3708
}
0 commit comments