| ... | ... | @@ -726,15 +726,21 @@ fn renderExpression( |
| 726 | 726 | expr_widths[i] = width; |
| 727 | 727 | } |
| 728 | 728 | |
| 729 | | const new_indent = indent + indent_delta; |
| 729 | var new_indent = indent + indent_delta; |
| 730 | 730 | try renderToken(tree, stream, lbrace, new_indent, start_col, Space.Newline); |
| 731 | | try stream.writeByteNTimes(' ', new_indent); |
| 731 | |
| 732 | if (tree.tokens.at(lbrace + 1).id != Token.Id.MultilineStringLiteralLine) { |
| 733 | try stream.writeByteNTimes(' ', new_indent); |
| 734 | } |
| 732 | 735 | |
| 733 | 736 | it.set(0); |
| 734 | 737 | i = 0; |
| 735 | 738 | var col: usize = 1; |
| 736 | 739 | while (it.next()) |expr| : (i += 1) { |
| 737 | 740 | if (it.peek()) |next_expr| { |
| 741 | if (expr.*.id == ast.Node.Id.MultilineStringLiteral) { |
| 742 | new_indent -= indent_delta; |
| 743 | } |
| 738 | 744 | try renderExpression(allocator, stream, tree, new_indent, start_col, expr.*, Space.None); |
| 739 | 745 | |
| 740 | 746 | const comma = tree.nextToken(expr.*.lastToken()); |
| ... | ... | @@ -753,12 +759,17 @@ fn renderExpression( |
| 753 | 759 | try renderToken(tree, stream, comma, new_indent, start_col, Space.Newline); // , |
| 754 | 760 | |
| 755 | 761 | try renderExtraNewline(tree, stream, start_col, next_expr.*); |
| 756 | | try stream.writeByteNTimes(' ', new_indent); |
| 762 | if (next_expr.*.id != ast.Node.Id.MultilineStringLiteral) { |
| 763 | try stream.writeByteNTimes(' ', new_indent); |
| 764 | } |
| 757 | 765 | } else { |
| 758 | 766 | try renderExpression(allocator, stream, tree, new_indent, start_col, expr.*, Space.Comma); // , |
| 759 | 767 | } |
| 760 | 768 | } |
| 761 | | try stream.writeByteNTimes(' ', indent); |
| 769 | const last_node = it.prev() orelse unreachable; |
| 770 | if (last_node.*.id != ast.Node.Id.MultilineStringLiteral) { |
| 771 | try stream.writeByteNTimes(' ', indent); |
| 772 | } |
| 762 | 773 | return renderToken(tree, stream, suffix_op.rtoken, indent, start_col, space); |
| 763 | 774 | } else { |
| 764 | 775 | try renderToken(tree, stream, lbrace, indent, start_col, Space.Space); |
| ... | ... | @@ -1039,6 +1050,8 @@ fn renderExpression( |
| 1039 | 1050 | }, |
| 1040 | 1051 | |
| 1041 | 1052 | ast.Node.Id.MultilineStringLiteral => { |
| 1053 | // TODO: Don't indent in this function, but let the caller indent. |
| 1054 | // If this has been implemented, a lot of hacky solutions in i.e. ArrayInit and FunctionCall can be removed |
| 1042 | 1055 | const multiline_str_literal = @fieldParentPtr(ast.Node.MultilineStringLiteral, "base", base); |
| 1043 | 1056 | |
| 1044 | 1057 | var skip_first_indent = true; |