26 lines
587 B
Rust
26 lines
587 B
Rust
#![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);
|
|
}
|