#![feature(never_patterns)] #![allow(incomplete_features)] #![deny(unreachable_patterns)] #![deny(unreachable_code)] fn main() {} enum Void {} fn never_arg(!: Void) -> u32 { println!(); //~^ ERROR unreachable statement } fn ref_never_arg(&!: &Void) -> u32 { println!(); //~^ ERROR unreachable statement } fn never_let() -> u32 { let ptr: *const Void = std::ptr::null(); unsafe { let ! = *ptr; } println!(); //~^ ERROR unreachable statement } fn never_match() -> u32 { let ptr: *const Void = std::ptr::null(); unsafe { match *ptr { ! }; } println!(); //~^ ERROR unreachable statement }