authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2021-06-21 10:53:37-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2021-06-21 17:03:03-07:00
log4f900e68d32be271f08e8b8844c725e0a595c467
treeea954e0f3a55e78693c80f4978ddfa17ab86f6b7
parentf4a9e0530a065f637f1a7fba95b163597bd88410

AstGen: fix crash in debug printing ZIR field types

The printing code did not properly set the parent Decl node field, so the source location calculations were wrong. closes #8825

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

src/Zir.zig+9
......@@ -3561,6 +3561,8 @@ const Writer = struct {
35613561 assert(body.len == 0);
35623562 try stream.writeAll("{}, {})");
35633563 } else {
3564 const prev_parent_decl_node = self.parent_decl_node;
3565 if (src_node) |off| self.parent_decl_node = self.relativeToNodeIndex(off);
35643566 self.indent += 2;
35653567 if (body.len == 0) {
35663568 try stream.writeAll("{}, {\n");
......@@ -3623,6 +3625,7 @@ const Writer = struct {
36233625 try stream.writeAll(",\n");
36243626 }
36253627
3628 self.parent_decl_node = prev_parent_decl_node;
36263629 self.indent -= 2;
36273630 try stream.writeByteNTimes(' ', self.indent);
36283631 try stream.writeAll("})");
......@@ -3691,6 +3694,8 @@ const Writer = struct {
36913694 const body = self.code.extra[extra_index..][0..body_len];
36923695 extra_index += body.len;
36933696
3697 const prev_parent_decl_node = self.parent_decl_node;
3698 if (src_node) |off| self.parent_decl_node = self.relativeToNodeIndex(off);
36943699 self.indent += 2;
36953700 if (body.len == 0) {
36963701 try stream.writeAll("{}, {\n");
......@@ -3756,6 +3761,7 @@ const Writer = struct {
37563761 try stream.writeAll(",\n");
37573762 }
37583763
3764 self.parent_decl_node = prev_parent_decl_node;
37593765 self.indent -= 2;
37603766 try stream.writeByteNTimes(' ', self.indent);
37613767 try stream.writeAll("})");
......@@ -3911,6 +3917,8 @@ const Writer = struct {
39113917 assert(body.len == 0);
39123918 try stream.writeAll("{}, {})");
39133919 } else {
3920 const prev_parent_decl_node = self.parent_decl_node;
3921 if (src_node) |off| self.parent_decl_node = self.relativeToNodeIndex(off);
39143922 self.indent += 2;
39153923 if (body.len == 0) {
39163924 try stream.writeAll("{}, {\n");
......@@ -3951,6 +3959,7 @@ const Writer = struct {
39513959 }
39523960 try stream.writeAll(",\n");
39533961 }
3962 self.parent_decl_node = prev_parent_decl_node;
39543963 self.indent -= 2;
39553964 try stream.writeByteNTimes(' ', self.indent);
39563965 try stream.writeAll("})");