diff --git a/doc/langref.html.in b/doc/langref.html.in index 1e4d993fe..032e05d60 100644 --- a/doc/langref.html.in +++ b/doc/langref.html.in @@ -3861,6 +3861,32 @@ test "if error union" { unreachable; } } + +test "if error union with optional" { + // If expressions test for errors before unwrapping optionals. + // The |optional_value| capture's type is ?u32. + + const a: anyerror!?u32 = 0; + if (a) |optional_value| { + assert(optional_value.? == 0); + } else |err| { + unreachable; + } + + const b: anyerror!?u32 = null; + if (b) |optional_value| { + assert(optional_value == null); + } else |err| { + unreachable; + } + + const c: anyerror!?u32 = error.BadValue; + if (c) |optional_value| { + unreachable; + } else |err| { + assert(err == error.BadValue); + } +} {#code_end#} {#see_also|Optionals|Errors#} {#header_close#}