32 lines
528 B
Rust
32 lines
528 B
Rust
// Verify that unreachable code undergoes unsafety checks.
|
|
// revisions: mir thir
|
|
// [thir]compile-flags: -Z thir-unsafeck
|
|
|
|
fn main() {
|
|
return;
|
|
*(1 as *mut u32) = 42;
|
|
//~^ ERROR dereference of raw pointer is unsafe
|
|
}
|
|
|
|
fn panic() -> ! {
|
|
panic!();
|
|
}
|
|
|
|
fn f(a: *mut u32) {
|
|
panic();
|
|
*a = 1;
|
|
//~^ ERROR dereference of raw pointer is unsafe
|
|
}
|
|
|
|
enum Void {}
|
|
|
|
fn uninhabited() -> Void {
|
|
panic!();
|
|
}
|
|
|
|
fn g(b: *mut u32) {
|
|
uninhabited();
|
|
*b = 1;
|
|
//~^ ERROR dereference of raw pointer is unsafe
|
|
}
|