| ... | ... | @@ -1462,7 +1462,7 @@ const Writer = struct { |
| 1462 | 1462 | if (struct_decl.backing_int_type_body) |backing_int_type_body| { |
| 1463 | 1463 | assert(struct_decl.layout == .@"packed"); |
| 1464 | 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 | 1466 | try stream.writeAll("), "); |
| 1467 | 1467 | } else { |
| 1468 | 1468 | try stream.print("{s}, ", .{@tagName(struct_decl.layout)}); |
| ... | ... | @@ -1487,15 +1487,15 @@ const Writer = struct { |
| 1487 | 1487 | try stream.print("{f}: ", .{std.zig.fmtIdP(field_name)}); |
| 1488 | 1488 | |
| 1489 | 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 | 1491 | if (field.align_body) |body| { |
| 1492 | 1492 | try stream.writeAll(" align("); |
| 1493 | | try self.writeBracedDecl(stream, body); |
| 1493 | try self.writeBracedDeclWithBaseline(stream, body, struct_decl.fields_baseline_src_node); |
| 1494 | 1494 | try stream.writeByte(')'); |
| 1495 | 1495 | } |
| 1496 | 1496 | if (field.default_body) |body| { |
| 1497 | 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 | 1500 | self.indent -= 2; |
| 1501 | 1501 | |
| ... | ... | @@ -1529,18 +1529,18 @@ const Writer = struct { |
| 1529 | 1529 | .@"packed" => try stream.writeAll("packed, "), |
| 1530 | 1530 | .packed_explicit => { |
| 1531 | 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 | 1533 | try stream.writeAll("), "); |
| 1534 | 1534 | }, |
| 1535 | 1535 | .tagged_explicit => { |
| 1536 | 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 | 1538 | try stream.writeAll("), "); |
| 1539 | 1539 | }, |
| 1540 | 1540 | .tagged_enum => try stream.writeAll("tagged(enum), "), |
| 1541 | 1541 | .tagged_enum_explicit => { |
| 1542 | 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 | 1544 | try stream.writeAll(")), "); |
| 1545 | 1545 | }, |
| 1546 | 1546 | } |
| ... | ... | @@ -1565,16 +1565,16 @@ const Writer = struct { |
| 1565 | 1565 | self.indent += 2; |
| 1566 | 1566 | if (field.type_body) |body| { |
| 1567 | 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 | 1570 | if (field.align_body) |body| { |
| 1571 | 1571 | try stream.writeAll(" align("); |
| 1572 | | try self.writeBracedDecl(stream, body); |
| 1572 | try self.writeBracedDeclWithBaseline(stream, body, union_decl.fields_baseline_src_node); |
| 1573 | 1573 | try stream.writeByte(')'); |
| 1574 | 1574 | } |
| 1575 | 1575 | if (field.value_body) |body| { |
| 1576 | 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 | 1579 | self.indent -= 2; |
| 1580 | 1580 | |
| ... | ... | @@ -1603,7 +1603,7 @@ const Writer = struct { |
| 1603 | 1603 | try self.writeFlag(stream, "nonexhaustive, ", enum_decl.nonexhaustive); |
| 1604 | 1604 | if (enum_decl.tag_type_body) |tag_type_body| { |
| 1605 | 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 | 1607 | try stream.writeAll("), "); |
| 1608 | 1608 | } |
| 1609 | 1609 | |
| ... | ... | @@ -1625,7 +1625,7 @@ const Writer = struct { |
| 1625 | 1625 | try stream.print("{f}", .{std.zig.fmtIdP(field_name)}); |
| 1626 | 1626 | if (field.value_body) |body| { |
| 1627 | 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 | 1630 | try stream.writeAll(",\n"); |
| 1631 | 1631 | } |
| ... | ... | @@ -2409,6 +2409,18 @@ const Writer = struct { |
| 2409 | 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 | 2424 | fn writeBracedBody(self: *Writer, stream: *std.Io.Writer, body: []const Zir.Inst.Index) !void { |
| 2413 | 2425 | try self.writeBracedBodyConditional(stream, body, self.recurse_blocks); |
| 2414 | 2426 | } |