authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2022-02-26 21:47:22-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2022-02-26 21:47:22-07:00
log4d658f83ed3893cf950615e9f58c2b533525b71d
tree56c59a4096623f4aa96d119bb4e50cf229f7c68e
parent2687b8f7f4825c9018af6998e1de140e6185f9cd

Sema: handle error.GenericPoison in fieldVal

Brings us 1 crash closer to formatted printing test cases.

1 files changed, 3 insertions(+), 9 deletions(-)

src/Sema.zig+3-9
......@@ -3698,11 +3698,7 @@ fn zirSuspendBlock(sema: *Sema, parent_block: *Block, inst: Zir.Inst.Index) Comp
36983698 return sema.fail(parent_block, src, "TODO: implement Sema.zirSuspendBlock", .{});
36993699}
37003700
3701fn zirBlock(
3702 sema: *Sema,
3703 parent_block: *Block,
3704 inst: Zir.Inst.Index,
3705) CompileError!Air.Inst.Ref {
3701fn zirBlock(sema: *Sema, parent_block: *Block, inst: Zir.Inst.Index) CompileError!Air.Inst.Ref {
37063702 const tracy = trace(@src());
37073703 defer tracy.end();
37083704
......@@ -3747,9 +3743,7 @@ fn zirBlock(
37473743 defer merges.results.deinit(gpa);
37483744 defer merges.br_list.deinit(gpa);
37493745
3750 _ = try sema.analyzeBody(&child_block, body);
3751
3752 return sema.analyzeBlockBody(parent_block, src, &child_block, merges);
3746 return sema.resolveBlockBody(parent_block, src, &child_block, body, inst, merges);
37533747}
37543748
37553749fn resolveBlockBody(
......@@ -14000,7 +13994,7 @@ fn fieldVal(
1400013994 var to_type_buffer: Value.ToTypeBuffer = undefined;
1400113995 const child_type = val.toType(&to_type_buffer);
1400213996
14003 switch (child_type.zigTypeTag()) {
13997 switch (try child_type.zigTypeTagOrPoison()) {
1400413998 .ErrorSet => {
1400513999 const name: []const u8 = if (child_type.castTag(.error_set)) |payload| blk: {
1400614000 if (payload.data.names.getEntry(field_name)) |entry| {