2017-11-19 09:04:24 -06:00
|
|
|
#![deny(safe_packed_borrows)]
|
|
|
|
|
2017-11-26 11:01:19 -06:00
|
|
|
// check that derive on a packed struct with non-Copy fields
|
|
|
|
// correctly. This can't be made to work perfectly because
|
|
|
|
// we can't just use the field from the struct as it might
|
|
|
|
// not be aligned.
|
|
|
|
|
2017-11-19 09:04:24 -06:00
|
|
|
#[derive(Copy, Clone, PartialEq, Eq)]
|
2019-07-06 02:48:03 -05:00
|
|
|
//~^ ERROR `#[derive]` can't be used
|
2017-11-19 09:04:24 -06:00
|
|
|
//~| hard error
|
2019-07-06 02:48:03 -05:00
|
|
|
//~^^^ ERROR `#[derive]` can't be used
|
2017-11-19 09:04:24 -06:00
|
|
|
//~| hard error
|
2017-11-26 11:01:19 -06:00
|
|
|
#[repr(packed)]
|
|
|
|
pub struct Foo<T>(T, T, T);
|
|
|
|
|
2017-11-19 09:04:24 -06:00
|
|
|
#[derive(PartialEq, Eq)]
|
2019-07-06 02:48:03 -05:00
|
|
|
//~^ ERROR `#[derive]` can't be used
|
2017-11-26 11:01:19 -06:00
|
|
|
//~| hard error
|
2017-11-19 09:04:24 -06:00
|
|
|
#[repr(packed)]
|
|
|
|
pub struct Bar(u32, u32, u32);
|
2017-11-26 11:01:19 -06:00
|
|
|
|
|
|
|
#[derive(PartialEq)]
|
|
|
|
struct Y(usize);
|
|
|
|
|
|
|
|
#[derive(PartialEq)]
|
2019-07-06 02:48:03 -05:00
|
|
|
//~^ ERROR `#[derive]` can't be used
|
2017-11-19 09:04:24 -06:00
|
|
|
//~| hard error
|
2017-11-26 11:01:19 -06:00
|
|
|
#[repr(packed)]
|
|
|
|
struct X(Y);
|
2017-11-19 09:04:24 -06:00
|
|
|
|
|
|
|
fn main() {}
|