rust/src/test/ui/consts/const-eval/ub-uninhabit.rs

24 lines
656 B
Rust
Raw Normal View History

#![feature(const_transmute)]
#![allow(const_err)] // make sure we cannot allow away the errors tested here
use std::mem;
2018-06-04 11:32:06 -05:00
#[derive(Copy, Clone)]
enum Bar {}
union TransmuteUnion<A: Clone + Copy, B: Clone + Copy> {
a: A,
b: B,
}
const BAD_BAD_BAD: Bar = unsafe { (TransmuteUnion::<(), Bar> { a: () }).b };
//~^ ERROR this constant likely exhibits undefined behavior
const BAD_BAD_REF: &Bar = unsafe { mem::transmute(1usize) };
2018-10-01 05:52:47 -05:00
//~^ ERROR it is undefined behavior to use this value
const BAD_BAD_ARRAY: [Bar; 1] = unsafe { (TransmuteUnion::<(), [Bar; 1]> { a: () }).b };
//~^ ERROR this constant likely exhibits undefined behavior
2018-06-04 11:32:06 -05:00
fn main() {}