33 lines
531 B
Rust
33 lines
531 B
Rust
// compile-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<Foo> = None;
|
|
match x { None => () }
|
|
}
|
|
|
|
fn test_b() {
|
|
let x: Option<Bar> = None;
|
|
match x {
|
|
Some(_) => (),
|
|
None => ()
|
|
}
|
|
}
|
|
|
|
fn main() { }
|