| //@revisions: stack tree |
| //@[tree]compile-flags: -Zmiri-tree-borrows |
| |
| // Create zero-sized references to vtables and function data. |
| // Just make sure nothing explodes. |
| |
| use std::{mem, ptr}; |
| |
| fn check_ref(x: &()) { |
| let _ptr = ptr::addr_of!(*x); |
| } |
| |
| fn main() { |
| check_ref({ |
| // Create reference to a function. |
| let fnptr: fn(&()) = check_ref; |
| unsafe { mem::transmute(fnptr) } |
| }); |
| check_ref({ |
| // Create reference to a vtable. |
| let wideptr: &dyn Send = &0; |
| let fields: (&i32, &()) = unsafe { mem::transmute(wideptr) }; |
| fields.1 |
| }) |
| } |