diff --git a/src/librustc_resolve/lib.rs b/src/librustc_resolve/lib.rs index c42ac7aaa937c..864a61108b1d3 100644 --- a/src/librustc_resolve/lib.rs +++ b/src/librustc_resolve/lib.rs @@ -3840,7 +3840,7 @@ impl<'a> Resolver<'a> { false => "defined", }; - let (name, span) = (ident.name, new_binding.span); + let (name, span) = (ident.name, self.session.codemap().def_span(new_binding.span)); if let Some(s) = self.name_already_seen.get(&name) { if s == &span { @@ -3885,8 +3885,8 @@ impl<'a> Resolver<'a> { err.span_label(span, format!("`{}` re{} here", name, new_participle)); if old_binding.span != syntax_pos::DUMMY_SP { - err.span_label(old_binding.span, format!("previous {} of the {} `{}` here", - old_noun, old_kind, name)); + err.span_label(self.session.codemap().def_span(old_binding.span), + format!("previous {} of the {} `{}` here", old_noun, old_kind, name)); } // See https://github.com/rust-lang/rust/issues/32354 diff --git a/src/test/ui/blind-item-item-shadow.stderr b/src/test/ui/blind-item-item-shadow.stderr index b9f3e742c66f4..855b3799eb5db 100644 --- a/src/test/ui/blind-item-item-shadow.stderr +++ b/src/test/ui/blind-item-item-shadow.stderr @@ -2,7 +2,7 @@ error[E0255]: the name `foo` is defined multiple times --> $DIR/blind-item-item-shadow.rs:13:5 | 11 | mod foo { pub mod foo { } } - | ---------------------------- previous definition of the module `foo` here + | ------- previous definition of the module `foo` here 12 | 13 | use foo::foo; | ^^^^^^^^ `foo` reimported here diff --git a/src/test/ui/enum-and-module-in-same-scope.stderr b/src/test/ui/enum-and-module-in-same-scope.stderr index 723e13f41093c..ddbee0655e4cd 100644 --- a/src/test/ui/enum-and-module-in-same-scope.stderr +++ b/src/test/ui/enum-and-module-in-same-scope.stderr @@ -1,16 +1,11 @@ error[E0428]: the name `Foo` is defined multiple times --> $DIR/enum-and-module-in-same-scope.rs:15:1 | -11 | / enum Foo { -12 | | X -13 | | } - | |_- previous definition of the type `Foo` here -14 | -15 | / mod Foo { //~ ERROR the name `Foo` is defined multiple times -16 | | pub static X: isize = 42; -17 | | fn f() { f() } // Check that this does not result in a resolution error -18 | | } - | |_^ `Foo` redefined here +11 | enum Foo { + | -------- previous definition of the type `Foo` here +... +15 | mod Foo { //~ ERROR the name `Foo` is defined multiple times + | ^^^^^^^ `Foo` redefined here | = note: `Foo` must be defined only once in the type namespace of this module diff --git a/src/test/ui/issue-19498.stderr b/src/test/ui/issue-19498.stderr index e7a308eacfe78..489abf715ded9 100644 --- a/src/test/ui/issue-19498.stderr +++ b/src/test/ui/issue-19498.stderr @@ -5,7 +5,7 @@ error[E0255]: the name `A` is defined multiple times | ------- previous import of the module `A` here 12 | use self::B; 13 | mod A {} //~ ERROR the name `A` is defined multiple times - | ^^^^^^^^ `A` redefined here + | ^^^^^ `A` redefined here | = note: `A` must be defined only once in the type namespace of this module help: You can use `as` to change the binding name of the import @@ -20,7 +20,7 @@ error[E0255]: the name `B` is defined multiple times | ------- previous import of the module `B` here ... 15 | pub mod B {} //~ ERROR the name `B` is defined multiple times - | ^^^^^^^^^^^^ `B` redefined here + | ^^^^^^^^^ `B` redefined here | = note: `B` must be defined only once in the type namespace of this module help: You can use `as` to change the binding name of the import @@ -34,7 +34,7 @@ error[E0255]: the name `D` is defined multiple times 18 | use C::D; | ---- previous import of the module `D` here 19 | mod D {} //~ ERROR the name `D` is defined multiple times - | ^^^^^^^^ `D` redefined here + | ^^^^^ `D` redefined here | = note: `D` must be defined only once in the type namespace of this module help: You can use `as` to change the binding name of the import diff --git a/src/test/ui/issue-21546.stderr b/src/test/ui/issue-21546.stderr index 9ec8dcdd83a57..ec953103a1c57 100644 --- a/src/test/ui/issue-21546.stderr +++ b/src/test/ui/issue-21546.stderr @@ -2,7 +2,7 @@ error[E0428]: the name `Foo` is defined multiple times --> $DIR/issue-21546.rs:17:1 | 14 | mod Foo { } - | ----------- previous definition of the module `Foo` here + | ------- previous definition of the module `Foo` here ... 17 | struct Foo; | ^^^^^^^^^^^ `Foo` redefined here @@ -13,7 +13,7 @@ error[E0428]: the name `Bar` is defined multiple times --> $DIR/issue-21546.rs:24:1 | 21 | mod Bar { } - | ----------- previous definition of the module `Bar` here + | ------- previous definition of the module `Bar` here ... 24 | struct Bar(i32); | ^^^^^^^^^^^^^^^^ `Bar` redefined here @@ -27,7 +27,7 @@ error[E0428]: the name `Baz` is defined multiple times | ---------------- previous definition of the type `Baz` here ... 32 | mod Baz { } - | ^^^^^^^^^^^ `Baz` redefined here + | ^^^^^^^ `Baz` redefined here | = note: `Baz` must be defined only once in the type namespace of this module @@ -35,10 +35,10 @@ error[E0428]: the name `Qux` is defined multiple times --> $DIR/issue-21546.rs:40:1 | 37 | struct Qux { x: bool } - | ---------------------- previous definition of the type `Qux` here + | ---------- previous definition of the type `Qux` here ... 40 | mod Qux { } - | ^^^^^^^^^^^ `Qux` redefined here + | ^^^^^^^ `Qux` redefined here | = note: `Qux` must be defined only once in the type namespace of this module @@ -49,7 +49,7 @@ error[E0428]: the name `Quux` is defined multiple times | ------------ previous definition of the type `Quux` here ... 48 | mod Quux { } - | ^^^^^^^^^^^^ `Quux` redefined here + | ^^^^^^^^ `Quux` redefined here | = note: `Quux` must be defined only once in the type namespace of this module @@ -57,10 +57,10 @@ error[E0428]: the name `Corge` is defined multiple times --> $DIR/issue-21546.rs:56:1 | 53 | enum Corge { A, B } - | ------------------- previous definition of the type `Corge` here + | ---------- previous definition of the type `Corge` here ... 56 | mod Corge { } - | ^^^^^^^^^^^^^ `Corge` redefined here + | ^^^^^^^^^ `Corge` redefined here | = note: `Corge` must be defined only once in the type namespace of this module diff --git a/src/test/ui/issue-24081.stderr b/src/test/ui/issue-24081.stderr index 37a2fba3852c2..969cf3577fbc2 100644 --- a/src/test/ui/issue-24081.stderr +++ b/src/test/ui/issue-24081.stderr @@ -20,7 +20,7 @@ error[E0255]: the name `Sub` is defined multiple times | ------------- previous import of the trait `Sub` here ... 19 | struct Sub { x: f32 } //~ ERROR the name `Sub` is defined multiple times - | ^^^^^^^^^^^^^^^^^^^^^ `Sub` redefined here + | ^^^^^^^^^^ `Sub` redefined here | = note: `Sub` must be defined only once in the type namespace of this module help: You can use `as` to change the binding name of the import @@ -35,7 +35,7 @@ error[E0255]: the name `Mul` is defined multiple times | ------------- previous import of the trait `Mul` here ... 21 | enum Mul { A, B } //~ ERROR the name `Mul` is defined multiple times - | ^^^^^^^^^^^^^^^^^ `Mul` redefined here + | ^^^^^^^^ `Mul` redefined here | = note: `Mul` must be defined only once in the type namespace of this module help: You can use `as` to change the binding name of the import @@ -50,7 +50,7 @@ error[E0255]: the name `Div` is defined multiple times | ------------- previous import of the trait `Div` here ... 23 | mod Div { } //~ ERROR the name `Div` is defined multiple times - | ^^^^^^^^^^^ `Div` redefined here + | ^^^^^^^ `Div` redefined here | = note: `Div` must be defined only once in the type namespace of this module help: You can use `as` to change the binding name of the import @@ -65,7 +65,7 @@ error[E0255]: the name `Rem` is defined multiple times | ------------- previous import of the trait `Rem` here ... 25 | trait Rem { } //~ ERROR the name `Rem` is defined multiple times - | ^^^^^^^^^^^^^^ `Rem` redefined here + | ^^^^^^^^^ `Rem` redefined here | = note: `Rem` must be defined only once in the type namespace of this module help: You can use `as` to change the binding name of the import diff --git a/src/test/ui/resolve-conflict-item-vs-import.stderr b/src/test/ui/resolve-conflict-item-vs-import.stderr index a52dcb37a2fed..03ef66681e440 100644 --- a/src/test/ui/resolve-conflict-item-vs-import.stderr +++ b/src/test/ui/resolve-conflict-item-vs-import.stderr @@ -5,7 +5,7 @@ error[E0255]: the name `transmute` is defined multiple times | ------------------- previous import of the value `transmute` here 12 | 13 | fn transmute() {} - | ^^^^^^^^^^^^^^^^^ `transmute` redefined here + | ^^^^^^^^^^^^^^ `transmute` redefined here | = note: `transmute` must be defined only once in the value namespace of this module help: You can use `as` to change the binding name of the import