parent
93367adaa7
commit
5fb7af26ab
@ -15496,7 +15496,8 @@ static IrInstruction *ir_resolve_result(IrAnalyze *ira, IrInstruction *suspend_s
|
|||||||
IrInstruction *unwrapped_err_ptr = ir_analyze_unwrap_error_payload(ira, suspend_source_instr,
|
IrInstruction *unwrapped_err_ptr = ir_analyze_unwrap_error_payload(ira, suspend_source_instr,
|
||||||
result_loc, false, true);
|
result_loc, false, true);
|
||||||
ZigType *actual_payload_type = actual_elem_type->data.error_union.payload_type;
|
ZigType *actual_payload_type = actual_elem_type->data.error_union.payload_type;
|
||||||
if (actual_payload_type->id == ZigTypeIdOptional && value_type->id != ZigTypeIdOptional) {
|
if (actual_payload_type->id == ZigTypeIdOptional && value_type->id != ZigTypeIdOptional &&
|
||||||
|
value_type->id != ZigTypeIdNull) {
|
||||||
return ir_analyze_unwrap_optional_payload(ira, suspend_source_instr, unwrapped_err_ptr, false, true);
|
return ir_analyze_unwrap_optional_payload(ira, suspend_source_instr, unwrapped_err_ptr, false, true);
|
||||||
} else {
|
} else {
|
||||||
return unwrapped_err_ptr;
|
return unwrapped_err_ptr;
|
||||||
|
@ -754,3 +754,15 @@ test "nested optional field in struct" {
|
|||||||
};
|
};
|
||||||
expect(s.x.?.y == 127);
|
expect(s.x.?.y == 127);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn maybe(x: bool) anyerror!?u32 {
|
||||||
|
return switch (x) {
|
||||||
|
true => u32(42),
|
||||||
|
else => null,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
test "result location is optional inside error union" {
|
||||||
|
const x = maybe(true) catch unreachable;
|
||||||
|
expect(x.? == 42);
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user