| #![allow(dead_code)] |
| //@ ignore-emscripten weird assertion? |
| |
| #[repr(packed)] |
| #[derive(Clone, Copy)] |
| struct Foo1(usize); |
| |
| #[repr(packed(4))] |
| #[derive(Clone, Copy)] |
| struct Foo4(usize); |
| |
| #[repr(packed(2))] |
| union Bar2 { |
| foo1: Foo1, |
| foo4: Foo4, |
| } |
| |
| pub fn main() { |
| let bar = Bar2 { foo1: Foo1(2) }; |
| let brw = unsafe { &bar.foo1.0 }; //~ERROR reference to field of packed struct is unaligned |
| assert_eq!(*brw, 2); |
| |
| let bar = Bar2 { foo4: Foo4(2) }; |
| let brw = unsafe { &bar.foo4.0 }; //~ERROR reference to field of packed union is unaligned |
| assert_eq!(*brw, 2); |
| } |