diff --git a/src/librustc_typeck/coherence/mod.rs b/src/librustc_typeck/coherence/mod.rs index 1cc81580a6f9b..939d81bf8477b 100644 --- a/src/librustc_typeck/coherence/mod.rs +++ b/src/librustc_typeck/coherence/mod.rs @@ -321,11 +321,13 @@ impl<'a, 'gcx, 'tcx> CoherenceChecker<'a, 'gcx, 'tcx> { } Err(CopyImplementationError::InfrigingVariant(name)) => { - span_err!(tcx.sess, span, E0205, + struct_span_err!(tcx.sess, span, E0205, "the trait `Copy` may not be \ - implemented for this type; variant \ + implemented for this type") + .span_label(span, &format!("variant \ `{}` does not implement `Copy`", - name) + name)) + .emit() } Err(CopyImplementationError::NotAnAdt) => { span_err!(tcx.sess, span, E0206, diff --git a/src/test/compile-fail/E0205.rs b/src/test/compile-fail/E0205.rs index e4781bba08aab..37ac57af524a6 100644 --- a/src/test/compile-fail/E0205.rs +++ b/src/test/compile-fail/E0205.rs @@ -13,9 +13,14 @@ enum Foo { Baz, } -impl Copy for Foo { } //~ ERROR E0205 +impl Copy for Foo { } +//~^ ERROR E0205 +//~| NOTE variant `Bar` does not implement `Copy` -#[derive(Copy)] //~ ERROR E0205 +#[derive(Copy)] +//~^ ERROR E0205 +//~| NOTE variant `Bar` does not implement `Copy` +//~| NOTE in this expansion of #[derive(Copy)] enum Foo2<'a> { Bar(&'a mut bool), Baz,