@@ -374,7 +374,42 @@ fn renderExpression(allocator: &mem.Allocator, stream: var, tree: &ast.Tree, ind
374
374
try renderExpression (allocator , stream , tree , indent , suffix_op .lhs , Space .None );
375
375
376
376
const lparen = tree .nextToken (suffix_op .lhs .lastToken ());
377
- try renderToken (tree , stream , lparen , indent , Space .None );
377
+
378
+ if (call_info .params .len == 0 ) {
379
+ try renderToken (tree , stream , lparen , indent , Space .None );
380
+ try renderToken (tree , stream , suffix_op .rtoken , indent , space );
381
+ return ;
382
+ }
383
+
384
+ const src_has_trailing_comma = blk : {
385
+ const maybe_comma = tree .prevToken (suffix_op .rtoken );
386
+ break :blk tree .tokens .at (maybe_comma ).id == Token .Id .Comma ;
387
+ };
388
+
389
+ if (src_has_trailing_comma ) {
390
+ const new_indent = indent + indent_delta ;
391
+ try renderToken (tree , stream , lparen , new_indent , Space .Newline );
392
+
393
+ var it = call_info .params .iterator (0 );
394
+ while (true ) {
395
+ const param_node = ?? it .next ();
396
+ try stream .writeByteNTimes (' ' , new_indent );
397
+
398
+ if (it .peek ()) | next_node | {
399
+ try renderExpression (allocator , stream , tree , new_indent , param_node .* , Space .None );
400
+ const comma = tree .nextToken (param_node .* .lastToken ());
401
+ try renderToken (tree , stream , comma , new_indent , Space .Newline ); // ,
402
+ try renderExtraNewline (tree , stream , next_node .* );
403
+ } else {
404
+ try renderTrailingComma (allocator , stream , tree , new_indent , param_node .* , Space .Newline );
405
+ try stream .writeByteNTimes (' ' , indent );
406
+ try renderToken (tree , stream , suffix_op .rtoken , indent , space );
407
+ return ;
408
+ }
409
+ }
410
+ }
411
+
412
+ try renderToken (tree , stream , lparen , indent , Space .None ); // (
378
413
379
414
var it = call_info .params .iterator (0 );
380
415
while (it .next ()) | param_node | {
@@ -385,7 +420,6 @@ fn renderExpression(allocator: &mem.Allocator, stream: var, tree: &ast.Tree, ind
385
420
try renderToken (tree , stream , comma , indent , Space .Space );
386
421
}
387
422
}
388
-
389
423
try renderToken (tree , stream , suffix_op .rtoken , indent , space );
390
424
},
391
425
0 commit comments