| ... | ... | @@ -557,11 +557,11 @@ fn renderExpression(allocator: &mem.Allocator, stream: var, tree: &ast.Tree, ind |
| 557 | 557 | }; |
| 558 | 558 | |
| 559 | 559 | |
| 560 | | const new_indent = indent + indent_delta; |
| 561 | | try renderToken(tree, stream, lbrace, new_indent, Space.Newline); |
| 562 | | try stream.writeByteNTimes(' ', new_indent); |
| 563 | | |
| 564 | 560 | if (maybe_row_size) |row_size| { |
| 561 | const new_indent = indent + indent_delta; |
| 562 | try renderToken(tree, stream, lbrace, new_indent, Space.Newline); |
| 563 | try stream.writeByteNTimes(' ', new_indent); |
| 564 | |
| 565 | 565 | var it = exprs.iterator(0); |
| 566 | 566 | var i: usize = 0; |
| 567 | 567 | while (it.next()) |expr| { |
| ... | ... | @@ -597,6 +597,30 @@ fn renderExpression(allocator: &mem.Allocator, stream: var, tree: &ast.Tree, ind |
| 597 | 597 | return; |
| 598 | 598 | } |
| 599 | 599 | |
| 600 | const src_has_trailing_comma = blk: { |
| 601 | const maybe_comma = tree.prevToken(suffix_op.rtoken); |
| 602 | break :blk tree.tokens.at(maybe_comma).id == Token.Id.Comma; |
| 603 | }; |
| 604 | if (!src_has_trailing_comma) { |
| 605 | try renderToken(tree, stream, lbrace, indent, Space.Space); |
| 606 | var it = exprs.iterator(0); |
| 607 | while (it.next()) |expr| { |
| 608 | try renderExpression(allocator, stream, tree, indent, expr.*, Space.None); |
| 609 | |
| 610 | if (it.peek()) |next_expr| { |
| 611 | const comma = tree.nextToken(expr.*.lastToken()); |
| 612 | try renderToken(tree, stream, comma, indent, Space.Space); // , |
| 613 | } |
| 614 | } |
| 615 | |
| 616 | try renderToken(tree, stream, suffix_op.rtoken, indent, space); |
| 617 | return; |
| 618 | } |
| 619 | |
| 620 | const new_indent = indent + indent_delta; |
| 621 | try renderToken(tree, stream, lbrace, new_indent, Space.Newline); |
| 622 | try stream.writeByteNTimes(' ', new_indent); |
| 623 | |
| 600 | 624 | var it = exprs.iterator(0); |
| 601 | 625 | while (it.next()) |expr| { |
| 602 | 626 | |