parent
0bdc85181c
commit
93367adaa7
|
@ -15487,6 +15487,7 @@ static IrInstruction *ir_resolve_result(IrAnalyze *ira, IrInstruction *suspend_s
|
||||||
if (actual_elem_type->id == ZigTypeIdOptional && value_type->id != ZigTypeIdOptional &&
|
if (actual_elem_type->id == ZigTypeIdOptional && value_type->id != ZigTypeIdOptional &&
|
||||||
value_type->id != ZigTypeIdNull)
|
value_type->id != ZigTypeIdNull)
|
||||||
{
|
{
|
||||||
|
result_loc_pass1->written = false;
|
||||||
return ir_analyze_unwrap_optional_payload(ira, suspend_source_instr, result_loc, false, true);
|
return ir_analyze_unwrap_optional_payload(ira, suspend_source_instr, result_loc, false, true);
|
||||||
} else if (actual_elem_type->id == ZigTypeIdErrorUnion && value_type->id != ZigTypeIdErrorUnion) {
|
} else if (actual_elem_type->id == ZigTypeIdErrorUnion && value_type->id != ZigTypeIdErrorUnion) {
|
||||||
if (value_type->id == ZigTypeIdErrorSet) {
|
if (value_type->id == ZigTypeIdErrorSet) {
|
||||||
|
|
|
@ -488,7 +488,7 @@ test "@typeName" {
|
||||||
expect(mem.eql(u8, @typeName(i64), "i64"));
|
expect(mem.eql(u8, @typeName(i64), "i64"));
|
||||||
expect(mem.eql(u8, @typeName(*usize), "*usize"));
|
expect(mem.eql(u8, @typeName(*usize), "*usize"));
|
||||||
// https://github.com/ziglang/zig/issues/675
|
// https://github.com/ziglang/zig/issues/675
|
||||||
expectEqualSlices(u8, "behavior.misc.TypeFromFn(u8)", @typeName(TypeFromFn(u8)));
|
expect(mem.eql(u8, "behavior.misc.TypeFromFn(u8)", @typeName(TypeFromFn(u8))));
|
||||||
expect(mem.eql(u8, @typeName(Struct), "Struct"));
|
expect(mem.eql(u8, @typeName(Struct), "Struct"));
|
||||||
expect(mem.eql(u8, @typeName(Union), "Union"));
|
expect(mem.eql(u8, @typeName(Union), "Union"));
|
||||||
expect(mem.eql(u8, @typeName(Enum), "Enum"));
|
expect(mem.eql(u8, @typeName(Enum), "Enum"));
|
||||||
|
@ -741,3 +741,16 @@ test "peer result location with typed parent, runtime condition, comptime prongs
|
||||||
expect(S.doTheTest(0) == 1234);
|
expect(S.doTheTest(0) == 1234);
|
||||||
expect(S.doTheTest(1) == 1234);
|
expect(S.doTheTest(1) == 1234);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
test "nested optional field in struct" {
|
||||||
|
const S2 = struct {
|
||||||
|
y: u8,
|
||||||
|
};
|
||||||
|
const S1 = struct {
|
||||||
|
x: ?S2,
|
||||||
|
};
|
||||||
|
var s = S1{
|
||||||
|
.x = S2{ .y = 127 },
|
||||||
|
};
|
||||||
|
expect(s.x.?.y == 127);
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue