// Checks that an unreachable code warning is emitted when an expression is // preceded by an expression with an uninhabited type. Previously, the // variable liveness analysis was "smarter" than the reachability analysis // in this regard, which led to confusing "unused variable" warnings // without an accompanying explanatory "unreachable expression" warning. //@ check-pass #![warn(unused_variables,unreachable_code)] enum Foo {} fn f() -> Foo {todo!()} fn main() { let x = f(); //~^ WARNING: unused variable: `x` let _ = x; //~^ WARNING: unreachable expression }