program main fn maybe_value(value: i32) -> (option i32) some i32 var value fn maybe_empty() -> (option i32) none i32 fn maybe_wide_value(value: i64) -> (option i64) some i64 var value fn maybe_wide_empty() -> (option i64) none i64 fn maybe_float_value(value: f64) -> (option f64) some f64 var value fn maybe_float_empty() -> (option f64) none f64 fn maybe_flag_value(value: bool) -> (option bool) some bool var value fn maybe_flag_empty() -> (option bool) none bool fn maybe_string_value(value: string) -> (option string) some string var value fn maybe_string_empty() -> (option string) none string fn result_ok_value(value: i32) -> (result i32 i32) ok i32 i32 var value fn result_err_value(code: i32) -> (result i32 i32) err i32 i32 var code fn option_value_or(value: (option i32), fallback: i32) -> i32 match subject var value arm some payload var payload arm none var fallback fn option_bump_or_zero(value: (option i32)) -> i32 match subject var value arm some payload local let bumped: i32 binary + var payload int 1 var bumped arm none int 0 fn option_wide_value_or(value: (option i64), fallback: i64) -> i64 match subject var value arm some payload var payload arm none var fallback fn option_wide_bump_or_zero(value: (option i64)) -> i64 match subject var value arm some payload local let bumped: i64 binary + var payload i64 1 var bumped arm none i64 0 fn option_float_value_or(value: (option f64), fallback: f64) -> f64 match subject var value arm some payload var payload arm none var fallback fn option_float_bump_or_zero(value: (option f64)) -> f64 match subject var value arm some payload local let bumped: f64 binary + var payload float 1 var bumped arm none float 0 fn option_flag_value_or(value: (option bool), fallback: bool) -> bool match subject var value arm some payload var payload arm none var fallback fn option_flag_selected_or(value: (option bool), fallback: bool) -> bool match subject var value arm some payload if var payload bool true bool false var payload arm none var fallback fn option_string_value_or(value: (option string), fallback: string) -> string match subject var value arm some payload var payload arm none var fallback fn option_string_selected_or(value: (option string), fallback: string) -> string match subject var value arm some payload local let chosen: string var payload var chosen arm none var fallback fn result_value_or_code(value: (result i32 i32)) -> i32 match subject var value arm ok payload var payload arm err code var code fn result_score(value: (result i32 i32)) -> i32 match subject var value arm ok payload binary + var payload int 10 arm err code var code fn main() -> i32 int 0 test "option match some payload" binary = call option_value_or call maybe_value int 42 int 0 int 42 test "option match none fallback" binary = call option_value_or call maybe_empty int 7 int 7 test "option match multi expression arm" binary = call option_bump_or_zero call maybe_value int 8 int 9 test "option i64 match some payload" binary = call option_wide_value_or call maybe_wide_value i64 2147483648 i64 0 i64 2147483648 test "option i64 match none fallback" binary = call option_wide_value_or call maybe_wide_empty i64 7 i64 7 test "option i64 match multi expression arm" binary = call option_wide_bump_or_zero call maybe_wide_value i64 8 i64 9 test "option f64 match some payload" binary = call option_float_value_or call maybe_float_value float 42.5 float 0 float 42.5 test "option f64 match none fallback" binary = call option_float_value_or call maybe_float_empty float 7 float 7 test "option f64 match multi expression arm" binary = call option_float_bump_or_zero call maybe_float_value float 8.5 float 9.5 test "option bool match some payload" call option_flag_value_or call maybe_flag_value bool true bool false test "option bool match none fallback" call option_flag_value_or call maybe_flag_empty bool true test "option bool match multi expression arm" call option_flag_selected_or call maybe_flag_value bool true bool false test "option string match some payload" binary = call option_string_value_or call maybe_string_value string "slovo" string "fallback" string "slovo" test "option string match none fallback" binary = call option_string_value_or call maybe_string_empty string "fallback" string "fallback" test "option string match multi expression arm" binary = call option_string_selected_or call maybe_string_value string "oak" string "fallback" string "oak" test "result match ok payload" binary = call result_value_or_code call result_ok_value int 30 int 30 test "result match err payload" binary = call result_value_or_code call result_err_value int 5 int 5 test "result match computed arm" binary = call result_score call result_ok_value int 2 int 12