@@ -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
0 commit comments