fn foo() ! { return error('something') } fn test_option_void() { foo() or { println(err) assert err.msg() == 'something' return } } fn bar() ! { return error('bar error') } fn test_option_void_only_question() { bar() or { println(err) assert err.msg() == 'bar error' return } } fn test_option_void_with_empty_or() { foo() or {} assert true } fn option_void(a int) ! { if a != 0 { return } else { return error('zero error') } } fn test_option_void_with_return() { option_void(0) or { println(err) assert err.msg() == 'zero error' return } option_void(-1) or { println(err) assert err.msg() == 'zero error' return } assert true } fn must_error_for_generic_result() ! { return error('boom') } fn never_returns_normally[T](value T) !T { must_error_for_generic_result()! } fn test_generic_result_propagation_from_always_error_fn_does_not_need_placeholder_return() { never_returns_normally(42) or { assert err.msg() == 'boom' return } assert false }