| ... | @@ -1462,7 +1462,7 @@ const Writer = struct { | ... | @@ -1462,7 +1462,7 @@ const Writer = struct { |
| 1462 | if (struct_decl.backing_int_type_body) |backing_int_type_body| { | 1462 | if (struct_decl.backing_int_type_body) |backing_int_type_body| { |
| 1463 | assert(struct_decl.layout == .@"packed"); | 1463 | assert(struct_decl.layout == .@"packed"); |
| 1464 | try stream.writeAll("packed("); | 1464 | try stream.writeAll("packed("); |
| 1465 | try self.writeBracedDecl(stream, backing_int_type_body); | 1465 | try self.writeBracedDeclWithBaseline(stream, backing_int_type_body, struct_decl.arg_baseline_src_node); |
| 1466 | try stream.writeAll("), "); | 1466 | try stream.writeAll("), "); |
| 1467 | } else { | 1467 | } else { |
| 1468 | try stream.print("{s}, ", .{@tagName(struct_decl.layout)}); | 1468 | try stream.print("{s}, ", .{@tagName(struct_decl.layout)}); |
| ... | @@ -1487,15 +1487,15 @@ const Writer = struct { | ... | @@ -1487,15 +1487,15 @@ const Writer = struct { |
| 1487 | try stream.print("{f}: ", .{std.zig.fmtIdP(field_name)}); | 1487 | try stream.print("{f}: ", .{std.zig.fmtIdP(field_name)}); |
| 1488 | | 1488 | |
| 1489 | self.indent += 2; | 1489 | self.indent += 2; |
| 1490 | try self.writeBracedDecl(stream, field.type_body); | 1490 | try self.writeBracedDeclWithBaseline(stream, field.type_body, struct_decl.fields_baseline_src_node); |
| 1491 | if (field.align_body) |body| { | 1491 | if (field.align_body) |body| { |
| 1492 | try stream.writeAll(" align("); | 1492 | try stream.writeAll(" align("); |
| 1493 | try self.writeBracedDecl(stream, body); | 1493 | try self.writeBracedDeclWithBaseline(stream, body, struct_decl.fields_baseline_src_node); |
| 1494 | try stream.writeByte(')'); | 1494 | try stream.writeByte(')'); |
| 1495 | } | 1495 | } |
| 1496 | if (field.default_body) |body| { | 1496 | if (field.default_body) |body| { |
| 1497 | try stream.writeAll(" = "); | 1497 | try stream.writeAll(" = "); |
| 1498 | try self.writeBracedDecl(stream, body); | 1498 | try self.writeBracedDeclWithBaseline(stream, body, struct_decl.fields_baseline_src_node); |
| 1499 | } | 1499 | } |
| 1500 | self.indent -= 2; | 1500 | self.indent -= 2; |
| 1501 | | 1501 | |
| ... | @@ -1529,18 +1529,18 @@ const Writer = struct { | ... | @@ -1529,18 +1529,18 @@ const Writer = struct { |
| 1529 | .@"packed" => try stream.writeAll("packed, "), | 1529 | .@"packed" => try stream.writeAll("packed, "), |
| 1530 | .packed_explicit => { | 1530 | .packed_explicit => { |
| 1531 | try stream.writeAll("packed("); | 1531 | try stream.writeAll("packed("); |
| 1532 | try self.writeBracedDecl(stream, union_decl.arg_type_body.?); | 1532 | try self.writeBracedDeclWithBaseline(stream, union_decl.arg_type_body.?, union_decl.arg_baseline_src_node); |
| 1533 | try stream.writeAll("), "); | 1533 | try stream.writeAll("), "); |
| 1534 | }, | 1534 | }, |
| 1535 | .tagged_explicit => { | 1535 | .tagged_explicit => { |
| 1536 | try stream.writeAll("tagged("); | 1536 | try stream.writeAll("tagged("); |
| 1537 | try self.writeBracedDecl(stream, union_decl.arg_type_body.?); | 1537 | try self.writeBracedDeclWithBaseline(stream, union_decl.arg_type_body.?, union_decl.arg_baseline_src_node); |
| 1538 | try stream.writeAll("), "); | 1538 | try stream.writeAll("), "); |
| 1539 | }, | 1539 | }, |
| 1540 | .tagged_enum => try stream.writeAll("tagged(enum), "), | 1540 | .tagged_enum => try stream.writeAll("tagged(enum), "), |
| 1541 | .tagged_enum_explicit => { | 1541 | .tagged_enum_explicit => { |
| 1542 | try stream.writeAll("tagged(enum("); | 1542 | try stream.writeAll("tagged(enum("); |
| 1543 | try self.writeBracedDecl(stream, union_decl.arg_type_body.?); | 1543 | try self.writeBracedDeclWithBaseline(stream, union_decl.arg_type_body.?, union_decl.arg_baseline_src_node); |
| 1544 | try stream.writeAll(")), "); | 1544 | try stream.writeAll(")), "); |
| 1545 | }, | 1545 | }, |
| 1546 | } | 1546 | } |
| ... | @@ -1565,16 +1565,16 @@ const Writer = struct { | ... | @@ -1565,16 +1565,16 @@ const Writer = struct { |
| 1565 | self.indent += 2; | 1565 | self.indent += 2; |
| 1566 | if (field.type_body) |body| { | 1566 | if (field.type_body) |body| { |
| 1567 | try stream.writeAll(": "); | 1567 | try stream.writeAll(": "); |
| 1568 | try self.writeBracedDecl(stream, body); | 1568 | try self.writeBracedDeclWithBaseline(stream, body, union_decl.fields_baseline_src_node); |
| 1569 | } | 1569 | } |
| 1570 | if (field.align_body) |body| { | 1570 | if (field.align_body) |body| { |
| 1571 | try stream.writeAll(" align("); | 1571 | try stream.writeAll(" align("); |
| 1572 | try self.writeBracedDecl(stream, body); | 1572 | try self.writeBracedDeclWithBaseline(stream, body, union_decl.fields_baseline_src_node); |
| 1573 | try stream.writeByte(')'); | 1573 | try stream.writeByte(')'); |
| 1574 | } | 1574 | } |
| 1575 | if (field.value_body) |body| { | 1575 | if (field.value_body) |body| { |
| 1576 | try stream.writeAll(" = "); | 1576 | try stream.writeAll(" = "); |
| 1577 | try self.writeBracedDecl(stream, body); | 1577 | try self.writeBracedDeclWithBaseline(stream, body, union_decl.fields_baseline_src_node); |
| 1578 | } | 1578 | } |
| 1579 | self.indent -= 2; | 1579 | self.indent -= 2; |
| 1580 | | 1580 | |
| ... | @@ -1603,7 +1603,7 @@ const Writer = struct { | ... | @@ -1603,7 +1603,7 @@ const Writer = struct { |
| 1603 | try self.writeFlag(stream, "nonexhaustive, ", enum_decl.nonexhaustive); | 1603 | try self.writeFlag(stream, "nonexhaustive, ", enum_decl.nonexhaustive); |
| 1604 | if (enum_decl.tag_type_body) |tag_type_body| { | 1604 | if (enum_decl.tag_type_body) |tag_type_body| { |
| 1605 | try stream.writeAll("tag("); | 1605 | try stream.writeAll("tag("); |
| 1606 | try self.writeBracedDecl(stream, tag_type_body); | 1606 | try self.writeBracedDeclWithBaseline(stream, tag_type_body, enum_decl.arg_baseline_src_node); |
| 1607 | try stream.writeAll("), "); | 1607 | try stream.writeAll("), "); |
| 1608 | } | 1608 | } |
| 1609 | | 1609 | |
| ... | @@ -1625,7 +1625,7 @@ const Writer = struct { | ... | @@ -1625,7 +1625,7 @@ const Writer = struct { |
| 1625 | try stream.print("{f}", .{std.zig.fmtIdP(field_name)}); | 1625 | try stream.print("{f}", .{std.zig.fmtIdP(field_name)}); |
| 1626 | if (field.value_body) |body| { | 1626 | if (field.value_body) |body| { |
| 1627 | try stream.writeAll(" = "); | 1627 | try stream.writeAll(" = "); |
| 1628 | try self.writeBracedDecl(stream, body); | 1628 | try self.writeBracedDeclWithBaseline(stream, body, enum_decl.fields_baseline_src_node); |
| 1629 | } | 1629 | } |
| 1630 | try stream.writeAll(",\n"); | 1630 | try stream.writeAll(",\n"); |
| 1631 | } | 1631 | } |
| ... | @@ -2409,6 +2409,18 @@ const Writer = struct { | ... | @@ -2409,6 +2409,18 @@ const Writer = struct { |
| 2409 | try self.writeBracedBodyConditional(stream, body, self.recurse_decls); | 2409 | try self.writeBracedBodyConditional(stream, body, self.recurse_decls); |
| 2410 | } | 2410 | } |
| 2411 | | 2411 | |
| | 2412 | fn writeBracedDeclWithBaseline( |
| | 2413 | self: *Writer, |
| | 2414 | stream: *std.Io.Writer, |
| | 2415 | body: []const Zir.Inst.Index, |
| | 2416 | src_baseline: Ast.Node.Index, |
| | 2417 | ) !void { |
| | 2418 | const prev_parent_decl_node = self.parent_decl_node; |
| | 2419 | self.parent_decl_node = src_baseline; |
| | 2420 | defer self.parent_decl_node = prev_parent_decl_node; |
| | 2421 | try self.writeBracedDecl(stream, body); |
| | 2422 | } |
| | 2423 | |
| 2412 | fn writeBracedBody(self: *Writer, stream: *std.Io.Writer, body: []const Zir.Inst.Index) !void { | 2424 | fn writeBracedBody(self: *Writer, stream: *std.Io.Writer, body: []const Zir.Inst.Index) !void { |
| 2413 | try self.writeBracedBodyConditional(stream, body, self.recurse_blocks); | 2425 | try self.writeBracedBodyConditional(stream, body, self.recurse_blocks); |
| 2414 | } | 2426 | } |