program main fn parse_text(text: string) -> (result i32 i32) call std.string.parse_i32_result : (result i32 i32) var text : string fn parse_stdin_text() -> (result i32 i32) local let input : unit call std.io.read_stdin_result : (result string i32) match : (result i32 i32) subject var input : (result string i32) arm ok text call std.string.parse_i32_result : (result i32 i32) var text : string arm err code err : (result i32 i32) var code : i32 fn main() -> i32 local let value : unit call parse_stdin_text : (result i32 i32) if : i32 is_ok : bool var value : (result i32 i32) unwrap_ok : i32 var value : (result i32 i32) unwrap_err : i32 var value : (result i32 i32) test "parse 42 ok" binary = : bool unwrap_ok : i32 call parse_text : (result i32 i32) string "42" : string int 42 : i32 test "parse negative 7 ok" binary = : bool unwrap_ok : i32 call parse_text : (result i32 i32) string "-7" : string int -7 : i32 test "parse empty err" binary = : bool unwrap_err : i32 call parse_text : (result i32 i32) string "" : string int 1 : i32 test "parse trailing byte err" binary = : bool unwrap_err : i32 call parse_text : (result i32 i32) string "12x" : string int 1 : i32 test "parse overflow err" binary = : bool unwrap_err : i32 call parse_text : (result i32 i32) string "2147483648" : string int 1 : i32 test "parse stdin text structurally" local let value : unit call parse_stdin_text : (result i32 i32) match : bool subject var value : (result i32 i32) arm ok parsed binary = : bool var parsed : i32 var parsed : i32 arm err code binary = : bool var code : i32 int 1 : i32