// Check that deriving certain builtin traits on certain packed structs cause
// errors. To avoid potentially misaligned references, field copies must be
// used, which involves adding `T: Copy` bounds.

#[derive(Copy, Clone, Default, PartialEq, Eq)]
#[repr(packed)]
pub struct Foo<T>(T, T, T);

// This one is fine because the fields all impl `Copy`.
#[derive(Default, Hash)]
#[repr(packed)]
pub struct Bar(u32, u32, u32);

// This one is fine because it's not packed.
#[derive(Debug, Default)]
struct Y(usize);

// This one has an error because `Y` doesn't impl `Copy`.
// Note: there is room for improvement in the error message.
#[derive(Debug, Default)]
#[repr(packed)]
struct X(Y);
//~^ ERROR cannot move out of `self` which is behind a shared reference

#[derive(Debug)]
#[repr(packed)]
struct FlexZeroSlice {
    width: u8,
    data: [u8],
    //~^ ERROR cannot move
    //~| ERROR cannot move
}

#[derive(Debug)]
#[repr(packed)]
struct WithStr {
    width: u8,
    data: str,
    //~^ ERROR cannot move
    //~| ERROR cannot move
}

fn main() {}
