//! returns: 0 //! An if-let pattern binding only shadows an outer variable in the success //! branch; the else branch must still read the outer SSA value. fn choose(value: ?i32) -> i32 { let outer: i32 = 7; if let outer = value { return outer; } else { return outer; } } @default fn main() -> i32 { assert choose(41) == 41; assert choose(nil) == 7; return 0; }