| ... | @@ -374,7 +374,42 @@ fn renderExpression(allocator: &mem.Allocator, stream: var, tree: &ast.Tree, ind | ... | @@ -374,7 +374,42 @@ fn renderExpression(allocator: &mem.Allocator, stream: var, tree: &ast.Tree, ind |
| 374 | try renderExpression(allocator, stream, tree, indent, suffix_op.lhs, Space.None); | 374 | try renderExpression(allocator, stream, tree, indent, suffix_op.lhs, Space.None); |
| 375 | | 375 | |
| 376 | const lparen = tree.nextToken(suffix_op.lhs.lastToken()); | 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 | var it = call_info.params.iterator(0); | 414 | var it = call_info.params.iterator(0); |
| 380 | while (it.next()) |param_node| { | 415 | while (it.next()) |param_node| { |
| ... | @@ -385,7 +420,6 @@ fn renderExpression(allocator: &mem.Allocator, stream: var, tree: &ast.Tree, ind | ... | @@ -385,7 +420,6 @@ fn renderExpression(allocator: &mem.Allocator, stream: var, tree: &ast.Tree, ind |
| 385 | try renderToken(tree, stream, comma, indent, Space.Space); | 420 | try renderToken(tree, stream, comma, indent, Space.Space); |
| 386 | } | 421 | } |
| 387 | } | 422 | } |
| 388 | | | |
| 389 | try renderToken(tree, stream, suffix_op.rtoken, indent, space); | 423 | try renderToken(tree, stream, suffix_op.rtoken, indent, space); |
| 390 | }, | 424 | }, |
| 391 | | 425 | |