]> git.lizzy.rs Git - rust.git/blob - src/test/ui/packed/packed-struct-borrow-element.rs
Rollup merge of #105955 - Nilstrieb:no-trivial-opt-wrappers-we-have-field-accesses...
[rust.git] / src / test / ui / packed / packed-struct-borrow-element.rs
1 // run-pass (note: this is spec-UB, but it works for now)
2 #![allow(dead_code)]
3 // ignore-emscripten weird assertion?
4
5 #[repr(packed)]
6 struct Foo1 {
7     bar: u8,
8     baz: usize
9 }
10
11 #[repr(packed(2))]
12 struct Foo2 {
13     bar: u8,
14     baz: usize
15 }
16
17 #[repr(C, packed(4))]
18 struct Foo4C {
19     bar: u8,
20     baz: usize
21 }
22
23 #[warn(unaligned_references)]
24 pub fn main() {
25     let foo = Foo1 { bar: 1, baz: 2 };
26     let brw = &foo.baz; //~WARN reference to packed field is unaligned
27     //~^ previously accepted
28     assert_eq!(*brw, 2);
29
30     let foo = Foo2 { bar: 1, baz: 2 };
31     let brw = &foo.baz; //~WARN reference to packed field is unaligned
32     //~^ previously accepted
33     assert_eq!(*brw, 2);
34 }