27 lines
687 B
Rust
27 lines
687 B
Rust
// skip-filecheck
|
|
|
|
//@ edition: 2021
|
|
// In ed 2021 and below, we don't fallback `!` to `()`.
|
|
// This would introduce a `! -> ()` coercion which would
|
|
// be UB if we didn't disallow this explicitly.
|
|
|
|
#![feature(never_type)]
|
|
|
|
// EMIT_MIR uninhabited_not_read.main.SimplifyLocals-final.after.mir
|
|
fn main() {
|
|
// With a type annotation
|
|
unsafe {
|
|
let x = 3u8;
|
|
let x: *const ! = &x as *const u8 as *const _;
|
|
let _: ! = *x;
|
|
}
|
|
|
|
// Without a type annotation, make sure we don't implicitly coerce `!` to `()`
|
|
// when we do the noop `*x`.
|
|
unsafe {
|
|
let x = 3u8;
|
|
let x: *const ! = &x as *const u8 as *const _;
|
|
let _ = *x;
|
|
}
|
|
}
|