// check-pass #![allow(dead_code)] #![feature(never_type)] #![feature(exhaustive_patterns)] // Regression test for inhabitedness check. The old // cache used to cause us to incorrectly decide // that `test_b` was invalid. struct Foo { field1: !, field2: Option<&'static Bar>, } struct Bar { field1: &'static Foo } fn test_a() { let x: Option = None; match x { None => () } } fn test_b() { let x: Option = None; match x { Some(_) => (), None => () } } fn main() { }