#[repr(u32)] | |
enum Bool { True } | |
fn evil(x: &mut Bool) { | |
let x = x as *mut _ as *mut u32; | |
unsafe { *x = 44; } // out-of-bounds enum discriminant | |
} | |
fn main() { | |
let mut x = Bool::True; | |
evil(&mut x); | |
let _y = x; // reading this ought to be enough to trigger validation | |
//~^ ERROR encountered 44, but expected a valid enum discriminant | |
} |