program main fn narrow(value: i64) -> (result i32 i32) call std.num.i64_to_i32_result : (result i32 i32) var value : i64 fn low_ok() -> (result i32 i32) call narrow : (result i32 i32) i64 -2147483648 : i64 fn high_ok() -> (result i32 i32) call narrow : (result i32 i32) i64 2147483647 : i64 fn negative_ok() -> (result i32 i32) call narrow : (result i32 i32) i64 -7 : i64 fn below_low_err() -> (result i32 i32) call narrow : (result i32 i32) i64 -2147483649 : i64 fn above_high_err() -> (result i32 i32) call narrow : (result i32 i32) i64 2147483648 : i64 fn main() -> i32 local let value : unit call negative_ok : (result i32 i32) if : i32 std.result.is_ok : bool var value : (result i32 i32) if : i32 binary = : bool std.result.unwrap_ok : i32 var value : (result i32 i32) int -7 : i32 int 0 : i32 int 1 : i32 std.result.unwrap_err : i32 var value : (result i32 i32) test "i64 low bound narrows to i32" local let value : unit call low_ok : (result i32 i32) if : bool std.result.is_ok : bool var value : (result i32 i32) binary = : bool std.result.unwrap_ok : i32 var value : (result i32 i32) int -2147483648 : i32 bool false : bool test "i64 high bound narrows to i32" local let value : unit call high_ok : (result i32 i32) if : bool std.result.is_ok : bool var value : (result i32 i32) binary = : bool std.result.unwrap_ok : i32 var value : (result i32 i32) int 2147483647 : i32 bool false : bool test "negative i64 narrows to i32" local let value : unit call negative_ok : (result i32 i32) if : bool std.result.is_ok : bool var value : (result i32 i32) binary = : bool std.result.unwrap_ok : i32 var value : (result i32 i32) int -7 : i32 bool false : bool test "below i32 range returns err" local let value : unit call below_low_err : (result i32 i32) if : bool std.result.is_err : bool var value : (result i32 i32) binary = : bool std.result.unwrap_err : i32 var value : (result i32 i32) int 1 : i32 bool false : bool test "above i32 range returns err" local let value : unit call above_high_err : (result i32 i32) if : bool std.result.is_err : bool var value : (result i32 i32) binary = : bool std.result.unwrap_err : i32 var value : (result i32 i32) int 1 : i32 bool false : bool