program main fn narrow(value: f64) -> (result i32 i32) call std.num.f64_to_i32_result var value fn zero_ok() -> (result i32 i32) call narrow binary - float 2.5 float 2.5 fn negative_ok() -> (result i32 i32) call narrow binary - float 1 float 13 fn fractional_err() -> (result i32 i32) call narrow binary / float 7 float 2 fn above_high_err() -> (result i32 i32) call narrow float 2147483648 fn main() -> i32 local let value: (result i32 i32) call negative_ok if std.result.is_ok var value if binary = std.result.unwrap_ok var value int -12 int 0 int 1 std.result.unwrap_err var value test "f64 zero narrows to i32" local let value: (result i32 i32) call zero_ok if std.result.is_ok var value binary = std.result.unwrap_ok var value int 0 bool false test "negative f64 narrows to i32" local let value: (result i32 i32) call negative_ok if std.result.is_ok var value binary = std.result.unwrap_ok var value int -12 bool false test "fractional f64 returns err" local let value: (result i32 i32) call fractional_err if std.result.is_err var value binary = std.result.unwrap_err var value int 1 bool false test "above i32 range f64 returns err" local let value: (result i32 i32) call above_high_err if std.result.is_err var value binary = std.result.unwrap_err var value int 1 bool false