24 lines
382 B
Rust
24 lines
382 B
Rust
|
// compile-pass
|
||
|
|
||
|
#![crate_type="lib"]
|
||
|
|
||
|
#![feature(never_type)]
|
||
|
#![allow(dead_code)]
|
||
|
#![allow(unreachable_code)]
|
||
|
#![allow(unused_variables)]
|
||
|
|
||
|
struct Foo;
|
||
|
|
||
|
pub fn f(x: !) -> ! {
|
||
|
x
|
||
|
}
|
||
|
|
||
|
pub fn ub() {
|
||
|
// This is completely undefined behaviour,
|
||
|
// but we still want to make sure it compiles.
|
||
|
let x: ! = unsafe {
|
||
|
std::mem::transmute::<Foo, !>(Foo)
|
||
|
};
|
||
|
f(x)
|
||
|
}
|