| ... | ... | @@ -486,6 +486,37 @@ fn renderExpression(allocator: &mem.Allocator, stream: var, tree: &ast.Tree, ind |
| 486 | 486 | return; |
| 487 | 487 | } |
| 488 | 488 | |
| 489 | const src_has_trailing_comma = blk: { |
| 490 | const maybe_comma = tree.prevToken(suffix_op.rtoken); |
| 491 | break :blk tree.tokens.at(maybe_comma).id == Token.Id.Comma; |
| 492 | }; |
| 493 | |
| 494 | const src_same_line = blk: { |
| 495 | const loc = tree.tokenLocation(tree.tokens.at(lbrace).end, suffix_op.rtoken); |
| 496 | break :blk loc.line == 0; |
| 497 | }; |
| 498 | |
| 499 | if (!src_has_trailing_comma and src_same_line) { |
| 500 | // render all on one line, no trailing comma |
| 501 | try renderExpression(allocator, stream, tree, indent, suffix_op.lhs, Space.None); |
| 502 | try renderToken(tree, stream, lbrace, indent, Space.Space); |
| 503 | |
| 504 | var it = field_inits.iterator(0); |
| 505 | while (it.next()) |field_init| { |
| 506 | if (it.peek() != null) { |
| 507 | try renderExpression(allocator, stream, tree, indent, field_init.*, Space.None); |
| 508 | |
| 509 | const comma = tree.nextToken(field_init.*.lastToken()); |
| 510 | try renderToken(tree, stream, comma, indent, Space.Space); |
| 511 | } else { |
| 512 | try renderExpression(allocator, stream, tree, indent, field_init.*, Space.Space); |
| 513 | } |
| 514 | } |
| 515 | |
| 516 | try renderToken(tree, stream, suffix_op.rtoken, indent, space); |
| 517 | return; |
| 518 | } |
| 519 | |
| 489 | 520 | try renderExpression(allocator, stream, tree, indent, suffix_op.lhs, Space.None); |
| 490 | 521 | try renderToken(tree, stream, lbrace, indent, Space.Newline); |
| 491 | 522 | |