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...@@ -3698,11 +3698,7 @@ fn zirSuspendBlock(sema: *Sema, parent_block: *Block, inst: Zir.Inst.Index) Comp
3698 return sema.fail(parent_block, src, "TODO: implement Sema.zirSuspendBlock", .{});3698 return sema.fail(parent_block, src, "TODO: implement Sema.zirSuspendBlock", .{});
3699}3699}
37003700
3701fn zirBlock(3701fn zirBlock(sema: *Sema, parent_block: *Block, inst: Zir.Inst.Index) CompileError!Air.Inst.Ref {
3702 sema: *Sema,
3703 parent_block: *Block,
3704 inst: Zir.Inst.Index,
3705) CompileError!Air.Inst.Ref {
3706 const tracy = trace(@src());3702 const tracy = trace(@src());
3707 defer tracy.end();3703 defer tracy.end();
37083704
...@@ -3747,9 +3743,7 @@ fn zirBlock(...@@ -3747,9 +3743,7 @@ fn zirBlock(
3747 defer merges.results.deinit(gpa);3743 defer merges.results.deinit(gpa);
3748 defer merges.br_list.deinit(gpa);3744 defer merges.br_list.deinit(gpa);
37493745
3750 _ = try sema.analyzeBody(&child_block, body);3746 return sema.resolveBlockBody(parent_block, src, &child_block, body, inst, merges);
3751
3752 return sema.analyzeBlockBody(parent_block, src, &child_block, merges);
3753}3747}
37543748
3755fn resolveBlockBody(3749fn resolveBlockBody(
...@@ -14000,7 +13994,7 @@ fn fieldVal(...@@ -14000,7 +13994,7 @@ fn fieldVal(
14000 var to_type_buffer: Value.ToTypeBuffer = undefined;13994 var to_type_buffer: Value.ToTypeBuffer = undefined;
14001 const child_type = val.toType(&to_type_buffer);13995 const child_type = val.toType(&to_type_buffer);
1400213996
14003 switch (child_type.zigTypeTag()) {13997 switch (try child_type.zigTypeTagOrPoison()) {
14004 .ErrorSet => {13998 .ErrorSet => {
14005 const name: []const u8 = if (child_type.castTag(.error_set)) |payload| blk: {13999 const name: []const u8 = if (child_type.castTag(.error_set)) |payload| blk: {
14006 if (payload.data.names.getEntry(field_name)) |entry| {14000 if (payload.data.names.getEntry(field_name)) |entry| {