#![allow(unused_variables)] | |
#![allow(unused_assignments)] | |
#![allow(dead_code)] | |
#![deny(unreachable_code)] | |
fn foo() { | |
// No error here. | |
let x; | |
x = return; //~ ERROR unreachable | |
} | |
fn bar() { | |
use std::ptr; | |
let p: *mut ! = ptr::null_mut::<!>(); | |
unsafe { | |
// Here we consider the `return` unreachable because | |
// "evaluating" the `*p` has type `!`. This is somewhat | |
// dubious, I suppose. | |
*p = return; //~ ERROR unreachable | |
} | |
} | |
fn baz() { | |
let mut i = 0; | |
*{return; &mut i} = 22; //~ ERROR unreachable | |
} | |
fn main() { } |