Skip to content

Commit

Permalink
E0119 update error format
Browse files Browse the repository at this point in the history
  • Loading branch information
circuitfox committed Aug 4, 2016
1 parent e804a3c commit 2f36ecf
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 5 deletions.
12 changes: 9 additions & 3 deletions src/librustc_typeck/coherence/overlap.rs
Original file line number Diff line number Diff line change
Expand Up @@ -141,12 +141,18 @@ impl<'cx, 'tcx,'v> intravisit::Visitor<'v> for OverlapChecker<'cx, 'tcx> {
self.tcx.sess, self.tcx.span_of_impl(impl_def_id).unwrap(), E0119,
"conflicting implementations of trait `{}`{}:",
overlap.trait_desc,
overlap.self_desc.map_or(String::new(),
|ty| format!(" for type `{}`", ty)));
overlap.self_desc.clone().map_or(String::new(),
|ty| format!(" for type `{}`", ty)));

match self.tcx.span_of_impl(overlap.with_impl) {
Ok(span) => {
err.span_note(span, "conflicting implementation is here:");
err.span_label(span,
&format!("first implementation here"));
err.span_label(self.tcx.span_of_impl(impl_def_id).unwrap(),
&format!("conflicting implementation{}",
overlap.self_desc
.map_or(String::new(),
|ty| format!(" for `{}`", ty))));
}
Err(cname) => {
err.note(&format!("conflicting implementation in crate `{}`",
Expand Down
3 changes: 2 additions & 1 deletion src/test/compile-fail/E0119.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ trait MyTrait {
fn get(&self) -> usize;
}

impl<T> MyTrait for T {
impl<T> MyTrait for T { //~ NOTE first implementation here
fn get(&self) -> usize { 0 }
}

Expand All @@ -21,6 +21,7 @@ struct Foo {
}

impl MyTrait for Foo { //~ ERROR E0119
//~| NOTE conflicting implementation for `Foo`
fn get(&self) -> usize { self.value }
}

Expand Down
3 changes: 2 additions & 1 deletion src/test/compile-fail/issue-28568.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,13 @@
struct MyStruct;

impl Drop for MyStruct {
//~^ NOTE conflicting implementation is here
//~^ NOTE first implementation here
fn drop(&mut self) { }
}

impl Drop for MyStruct {
//~^ ERROR conflicting implementations of trait
//~| NOTE conflicting implementation for `MyStruct`
fn drop(&mut self) { }
}

Expand Down

0 comments on commit 2f36ecf

Please sign in to comment.