#![allow(unused_variables)] #![allow(unused_assignments)] #![allow(dead_code)] #![deny(unreachable_code)] fn a() { // Here the tail expression is considered unreachable: let x = { return; 22 //~ ERROR unreachable }; } fn b() { // Here the `x` assignment is considered unreachable, not the block: let x = { return; }; } fn c() { // Here the `println!` is unreachable: let x = { return; println!("foo"); //~^ ERROR unreachable statement 22 }; } fn main() { }