| ... | ... | @@ -393,15 +393,21 @@ fn renderExpression(allocator: &mem.Allocator, stream: var, tree: &ast.Tree, ind |
| 393 | 393 | var it = call_info.params.iterator(0); |
| 394 | 394 | while (true) { |
| 395 | 395 | const param_node = ??it.next(); |
| 396 | | try stream.writeByteNTimes(' ', new_indent); |
| 396 | |
| 397 | const param_node_new_indent = if (param_node.*.id == ast.Node.Id.MultilineStringLiteral) blk: { |
| 398 | break :blk indent; |
| 399 | } else blk: { |
| 400 | try stream.writeByteNTimes(' ', new_indent); |
| 401 | break :blk new_indent; |
| 402 | }; |
| 397 | 403 | |
| 398 | 404 | if (it.peek()) |next_node| { |
| 399 | | try renderExpression(allocator, stream, tree, new_indent, param_node.*, Space.None); |
| 405 | try renderExpression(allocator, stream, tree, param_node_new_indent, param_node.*, Space.None); |
| 400 | 406 | const comma = tree.nextToken(param_node.*.lastToken()); |
| 401 | 407 | try renderToken(tree, stream, comma, new_indent, Space.Newline); // , |
| 402 | 408 | try renderExtraNewline(tree, stream, next_node.*); |
| 403 | 409 | } else { |
| 404 | | try renderTrailingComma(allocator, stream, tree, new_indent, param_node.*, Space.Newline); |
| 410 | try renderTrailingComma(allocator, stream, tree, param_node_new_indent, param_node.*, Space.Newline); |
| 405 | 411 | try stream.writeByteNTimes(' ', indent); |
| 406 | 412 | try renderToken(tree, stream, suffix_op.rtoken, indent, space); |
| 407 | 413 | return; |
| ... | ... | @@ -1502,7 +1508,13 @@ fn renderToken(tree: &ast.Tree, stream: var, token_index: ast.TokenIndex, indent |
| 1502 | 1508 | if (next_token.id != Token.Id.LineComment) { |
| 1503 | 1509 | switch (space) { |
| 1504 | 1510 | Space.None, Space.NoNewline, Space.NoIndent => return, |
| 1505 | | Space.Newline => return stream.write("\n"), |
| 1511 | Space.Newline => { |
| 1512 | if (next_token.id == Token.Id.MultilineStringLiteralLine) { |
| 1513 | return; |
| 1514 | } else { |
| 1515 | return stream.write("\n"); |
| 1516 | } |
| 1517 | }, |
| 1506 | 1518 | Space.Space => return stream.writeByte(' '), |
| 1507 | 1519 | Space.NoComment => unreachable, |
| 1508 | 1520 | } |
| ... | ... | @@ -1526,7 +1538,13 @@ fn renderToken(tree: &ast.Tree, stream: var, token_index: ast.TokenIndex, indent |
| 1526 | 1538 | }; |
| 1527 | 1539 | try stream.writeByteNTimes(' ', next_line_indent); |
| 1528 | 1540 | }, |
| 1529 | | Space.Newline, Space.NoIndent => try stream.write("\n"), |
| 1541 | Space.Newline, Space.NoIndent => { |
| 1542 | if (next_token.id == Token.Id.MultilineStringLiteralLine) { |
| 1543 | return; |
| 1544 | } else { |
| 1545 | return stream.write("\n"); |
| 1546 | } |
| 1547 | }, |
| 1530 | 1548 | Space.NoNewline => {}, |
| 1531 | 1549 | Space.NoComment => unreachable, |
| 1532 | 1550 | } |
| ... | ... | @@ -1547,7 +1565,13 @@ fn renderToken(tree: &ast.Tree, stream: var, token_index: ast.TokenIndex, indent |
| 1547 | 1565 | next_token = tree.tokens.at(token_index + offset); |
| 1548 | 1566 | if (next_token.id != Token.Id.LineComment) { |
| 1549 | 1567 | switch (space) { |
| 1550 | | Space.Newline, Space.NoIndent => try stream.writeByte('\n'), |
| 1568 | Space.Newline, Space.NoIndent => { |
| 1569 | if (next_token.id == Token.Id.MultilineStringLiteralLine) { |
| 1570 | return; |
| 1571 | } else { |
| 1572 | return stream.write("\n"); |
| 1573 | } |
| 1574 | }, |
| 1551 | 1575 | Space.None, Space.Space => { |
| 1552 | 1576 | try stream.writeByte('\n'); |
| 1553 | 1577 | |