| ... | @@ -3886,6 +3886,22 @@ test "if error union with optional" { | ... | @@ -3886,6 +3886,22 @@ test "if error union with optional" { |
| 3886 | } else |err| { | 3886 | } else |err| { |
| 3887 | assert(err == error.BadValue); | 3887 | assert(err == error.BadValue); |
| 3888 | } | 3888 | } |
| | 3889 | |
| | 3890 | // Access the value by reference by using a pointer capture each time. |
| | 3891 | var d: anyerror!?u32 = 3; |
| | 3892 | if (d) |*optional_value| { |
| | 3893 | if (optional_value.*) |*value| { |
| | 3894 | value.* = 9; |
| | 3895 | } |
| | 3896 | } else |err| { |
| | 3897 | unreachable; |
| | 3898 | } |
| | 3899 | |
| | 3900 | if (d) |optional_value| { |
| | 3901 | assert(optional_value.? == 9); |
| | 3902 | } else |err| { |
| | 3903 | unreachable; |
| | 3904 | } |
| 3889 | } | 3905 | } |
| 3890 | {#code_end#} | 3906 | {#code_end#} |
| 3891 | {#see_also|Optionals|Errors#} | 3907 | {#see_also|Optionals|Errors#} |