]> git.lizzy.rs Git - rust.git/blob - src/test/ui/issues/issue-27060.rs
Auto merge of #78066 - bugadani:wat, r=jonas-schievink
[rust.git] / src / test / ui / issues / issue-27060.rs
1 #[repr(packed)]
2 pub struct Good {
3     data: &'static u32,
4     data2: [&'static u32; 2],
5     aligned: [u8; 32],
6 }
7
8 #[deny(safe_packed_borrows)]
9 fn main() {
10     let good = Good {
11         data: &0,
12         data2: [&0, &0],
13         aligned: [0; 32]
14     };
15
16     unsafe {
17         let _ = &good.data; // ok
18         let _ = &good.data2[0]; // ok
19     }
20
21     let _ = &good.data; //~ ERROR borrow of packed field is unsafe
22                         //~| hard error
23     let _ = &good.data2[0]; //~ ERROR borrow of packed field is unsafe
24                             //~| hard error
25     let _ = &*good.data; // ok, behind a pointer
26     let _ = &good.aligned; // ok, has align 1
27     let _ = &good.aligned[2]; // ok, has align 1
28 }