Skip to content

Commit

Permalink
resolve: clean up diagnostics for name conflicts.
Browse files Browse the repository at this point in the history
  • Loading branch information
jseyfried committed Dec 19, 2016
1 parent 8e61ff2 commit 51f25b3
Show file tree
Hide file tree
Showing 6 changed files with 19 additions and 40 deletions.
37 changes: 8 additions & 29 deletions src/librustc_resolve/lib.rs
Expand Up @@ -3156,40 +3156,19 @@ impl<'a> Resolver<'a> {
};

let mut err = match (old_binding.is_extern_crate(), binding.is_extern_crate()) {
(true, true) => {
let mut e = struct_span_err!(self.session, span, E0259, "{}", msg);
e.span_label(span, &format!("`{}` was already imported", name));
e
},
(true, _) | (_, true) if binding.is_import() && old_binding.is_import() => {
let mut e = struct_span_err!(self.session, span, E0254, "{}", msg);
e.span_label(span, &"already imported");
e
},
(true, _) | (_, true) => {
let mut e = struct_span_err!(self.session, span, E0260, "{}", msg);
e.span_label(span, &format!("`{}` already imported", name));
e
(true, true) => struct_span_err!(self.session, span, E0259, "{}", msg),
(true, _) | (_, true) => match binding.is_import() && old_binding.is_import() {
true => struct_span_err!(self.session, span, E0254, "{}", msg),
false => struct_span_err!(self.session, span, E0260, "{}", msg),
},
_ => match (old_binding.is_import(), binding.is_import()) {
(false, false) => {
let mut e = struct_span_err!(self.session, span, E0428, "{}", msg);
e.span_label(span, &format!("already defined"));
e
},
(true, true) => {
let mut e = struct_span_err!(self.session, span, E0252, "{}", msg);
e.span_label(span, &format!("already imported"));
e
},
_ => {
let mut e = struct_span_err!(self.session, span, E0255, "{}", msg);
e.span_label(span, &format!("`{}` was already imported", name));
e
}
(false, false) => struct_span_err!(self.session, span, E0428, "{}", msg),
(true, true) => struct_span_err!(self.session, span, E0252, "{}", msg),
_ => struct_span_err!(self.session, span, E0255, "{}", msg),
},
};

err.span_label(span, &format!("`{}` already {}", name, participle));
if old_binding.span != syntax_pos::DUMMY_SP {
err.span_label(old_binding.span, &format!("previous {} of `{}` here", noun, name));
}
Expand Down
2 changes: 1 addition & 1 deletion src/test/compile-fail/E0259.rs
Expand Up @@ -15,6 +15,6 @@ extern crate collections;

extern crate libc as collections;
//~^ ERROR E0259
//~| NOTE `collections` was already imported
//~| NOTE `collections` already imported

fn main() {}
2 changes: 1 addition & 1 deletion src/test/compile-fail/blind-item-item-shadow.rs
Expand Up @@ -12,6 +12,6 @@ mod foo { pub mod foo { } } //~ NOTE previous definition of `foo` here

use foo::foo;
//~^ ERROR a module named `foo` has already been defined in this module
//~| was already imported
//~| `foo` already defined

fn main() {}
6 changes: 3 additions & 3 deletions src/test/compile-fail/issue-19498.rs
Expand Up @@ -11,13 +11,13 @@
use self::A; //~ NOTE previous import of `A` here
use self::B; //~ NOTE previous import of `B` here
mod A {} //~ ERROR a module named `A` has already been imported in this module
//~| `A` was already imported
//~| `A` already imported
pub mod B {} //~ ERROR a module named `B` has already been imported in this module
//~| `B` was already imported
//~| `B` already imported
mod C {
use C::D; //~ NOTE previous import of `D` here
mod D {} //~ ERROR a module named `D` has already been imported in this module
//~| `D` was already imported
//~| `D` already imported
}

fn main() {}
10 changes: 5 additions & 5 deletions src/test/compile-fail/issue-24081.rs
Expand Up @@ -15,14 +15,14 @@ use std::ops::Div; //~ NOTE previous import
use std::ops::Rem; //~ NOTE previous import

type Add = bool; //~ ERROR a trait named `Add` has already been imported in this module
//~| was already imported
//~| `Add` already imported
struct Sub { x: f32 } //~ ERROR a trait named `Sub` has already been imported in this module
//~| was already imported
//~| `Sub` already imported
enum Mul { A, B } //~ ERROR a trait named `Mul` has already been imported in this module
//~| was already imported
//~| `Mul` already imported
mod Div { } //~ ERROR a trait named `Div` has already been imported in this module
//~| was already imported
//~| `Div` already imported
trait Rem { } //~ ERROR a trait named `Rem` has already been imported in this module
//~| was already imported
//~| `Rem` already imported

fn main() {}
2 changes: 1 addition & 1 deletion src/test/compile-fail/resolve-conflict-item-vs-import.rs
Expand Up @@ -13,6 +13,6 @@ use std::mem::transmute;

fn transmute() {}
//~^ ERROR a value named `transmute` has already been imported in this module
//~| was already imported
//~| `transmute` already imported
fn main() {
}

0 comments on commit 51f25b3

Please sign in to comment.