//@ run-pass | |
#![allow(warnings)] | |
// Here the type of `c` is `Option<?T>`, where `?T` is unconstrained. | |
// Because there is data-flow from the `{ return; }` block, which | |
// diverges and hence has type `!`, into `c`, we will default `?T` to | |
// `!`, and hence this code compiles rather than failing and requiring | |
// a type annotation. | |
fn main() { | |
let c = Some({ return; }); | |
c.unwrap(); | |
} |