From 3deb75729eb08d930da90f2e9407b2f79f0025b7 Mon Sep 17 00:00:00 2001 From: "leonardo.yvens" Date: Wed, 9 May 2018 10:05:59 -0300 Subject: Merge all "Copy not implemented" errors --- src/librustc_typeck/coherence/builtin.rs | 16 +++++++--------- src/test/ui/issue-50480.rs | 1 - src/test/ui/issue-50480.stderr | 21 +++++++-------------- 3 files changed, 14 insertions(+), 24 deletions(-) diff --git a/src/librustc_typeck/coherence/builtin.rs b/src/librustc_typeck/coherence/builtin.rs index 7627d9071dc..2f08a54e10f 100644 --- a/src/librustc_typeck/coherence/builtin.rs +++ b/src/librustc_typeck/coherence/builtin.rs @@ -121,16 +121,14 @@ fn visit_implementation_of_copy<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>, span }; - for field in fields { - struct_span_err!(tcx.sess, - span, - E0204, - "the trait `Copy` may not be implemented for this type") - .span_label( - tcx.def_span(field.did), - "this field does not implement `Copy`") - .emit() + let mut err = struct_span_err!(tcx.sess, + span, + E0204, + "the trait `Copy` may not be implemented for this type"); + for span in fields.iter().map(|f| tcx.def_span(f.did)) { + err.span_label(span, "this field does not implement `Copy`"); } + err.emit() } Err(CopyImplementationError::NotAnAdt) => { let item = tcx.hir.expect_item(impl_node_id); diff --git a/src/test/ui/issue-50480.rs b/src/test/ui/issue-50480.rs index 20af6d4cf83..3427cf6bf9c 100644 --- a/src/test/ui/issue-50480.rs +++ b/src/test/ui/issue-50480.rs @@ -10,7 +10,6 @@ #[derive(Clone, Copy)] //~^ ERROR the trait `Copy` may not be implemented for this type -//~| ERROR the trait `Copy` may not be implemented for this type struct Foo(NotDefined, ::Item, Vec, String); //~^ ERROR cannot find type `NotDefined` in this scope //~| ERROR the trait bound `i32: std::iter::Iterator` is not satisfied diff --git a/src/test/ui/issue-50480.stderr b/src/test/ui/issue-50480.stderr index 7aeecfaabb3..3714a0b72b7 100644 --- a/src/test/ui/issue-50480.stderr +++ b/src/test/ui/issue-50480.stderr @@ -1,11 +1,11 @@ error[E0412]: cannot find type `NotDefined` in this scope - --> $DIR/issue-50480.rs:14:12 + --> $DIR/issue-50480.rs:13:12 | LL | struct Foo(NotDefined, ::Item, Vec, String); | ^^^^^^^^^^ not found in this scope error[E0277]: the trait bound `i32: std::iter::Iterator` is not satisfied - --> $DIR/issue-50480.rs:14:24 + --> $DIR/issue-50480.rs:13:24 | LL | struct Foo(NotDefined, ::Item, Vec, String); | ^^^^^^^^^^^^^^^^^^^^^^^^ `i32` is not an iterator; maybe try calling `.iter()` or a similar method @@ -17,20 +17,13 @@ error[E0204]: the trait `Copy` may not be implemented for this type | LL | #[derive(Clone, Copy)] | ^^^^ -... +LL | //~^ ERROR the trait `Copy` may not be implemented for this type LL | struct Foo(NotDefined, ::Item, Vec, String); - | --------- this field does not implement `Copy` + | --------- ------- this field does not implement `Copy` + | | + | this field does not implement `Copy` -error[E0204]: the trait `Copy` may not be implemented for this type - --> $DIR/issue-50480.rs:11:17 - | -LL | #[derive(Clone, Copy)] - | ^^^^ -... -LL | struct Foo(NotDefined, ::Item, Vec, String); - | ------- this field does not implement `Copy` - -error: aborting due to 4 previous errors +error: aborting due to 3 previous errors Some errors occurred: E0204, E0277, E0412. For more information about an error, try `rustc --explain E0204`. -- cgit 1.4.1-3-g733a5