error: traits in `#[derive(...)]` don't accept arguments
  --> $DIR/malformed-derive-entry.rs:1:14
   |
LL | #[derive(Copy(Bad))]
   |              ^^^^^ help: remove the arguments

error: traits in `#[derive(...)]` don't accept values
  --> $DIR/malformed-derive-entry.rs:6:14
   |
LL | #[derive(Copy="bad")]
   |              ^^^^^^ help: remove the value

error: malformed `derive` attribute input
  --> $DIR/malformed-derive-entry.rs:11:1
   |
LL | #[derive]
   | ^^^^^^^^^ help: missing traits to be derived: `#[derive(Trait1, Trait2, ...)]`

error[E0277]: the trait bound `Test1: std::clone::Clone` is not satisfied
  --> $DIR/malformed-derive-entry.rs:1:10
   |
LL | #[derive(Copy(Bad))]
   |          ^^^^ the trait `std::clone::Clone` is not implemented for `Test1`
   | 
  ::: $SRC_DIR/libcore/marker.rs:LL:COL
   |
LL | pub trait Copy: Clone {
   |                 ----- required by this bound in `std::marker::Copy`
   |
   = note: this error originates in a derive macro (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0277]: the trait bound `Test2: std::clone::Clone` is not satisfied
  --> $DIR/malformed-derive-entry.rs:6:10
   |
LL | #[derive(Copy="bad")]
   |          ^^^^ the trait `std::clone::Clone` is not implemented for `Test2`
   | 
  ::: $SRC_DIR/libcore/marker.rs:LL:COL
   |
LL | pub trait Copy: Clone {
   |                 ----- required by this bound in `std::marker::Copy`
   |
   = note: this error originates in a derive macro (in Nightly builds, run with -Z macro-backtrace for more info)

error: aborting due to 5 previous errors

For more information about this error, try `rustc --explain E0277`.
