| ... | @@ -1341,7 +1341,7 @@ fn renderExpression(allocator: &mem.Allocator, stream: var, tree: &ast.Tree, ind | ... | @@ -1341,7 +1341,7 @@ fn renderExpression(allocator: &mem.Allocator, stream: var, tree: &ast.Tree, ind |
| 1341 | } | 1341 | } |
| 1342 | | 1342 | |
| 1343 | if (if_node.@"else") |@"else"| { | 1343 | if (if_node.@"else") |@"else"| { |
| 1344 | try renderExpression(allocator, stream, tree, indent, if_node.body, Space.Space); | 1344 | try renderExpression(allocator, stream, tree, indent, if_node.body, Space.SpaceOrOutdent); |
| 1345 | return renderExpression(allocator, stream, tree, indent, &@"else".base, space); | 1345 | return renderExpression(allocator, stream, tree, indent, &@"else".base, space); |
| 1346 | } else { | 1346 | } else { |
| 1347 | return renderExpression(allocator, stream, tree, indent, if_node.body, space); | 1347 | return renderExpression(allocator, stream, tree, indent, if_node.body, space); |
| ... | @@ -1685,8 +1685,8 @@ const Space = enum { | ... | @@ -1685,8 +1685,8 @@ const Space = enum { |
| 1685 | Newline, | 1685 | Newline, |
| 1686 | Comma, | 1686 | Comma, |
| 1687 | Space, | 1687 | Space, |
| | 1688 | SpaceOrOutdent, |
| 1688 | NoNewline, | 1689 | NoNewline, |
| 1689 | NoIndent, | | |
| 1690 | NoComment, | 1690 | NoComment, |
| 1691 | }; | 1691 | }; |
| 1692 | | 1692 | |
| ... | @@ -1717,7 +1717,7 @@ fn renderToken(tree: &ast.Tree, stream: var, token_index: ast.TokenIndex, indent | ... | @@ -1717,7 +1717,7 @@ fn renderToken(tree: &ast.Tree, stream: var, token_index: ast.TokenIndex, indent |
| 1717 | | 1717 | |
| 1718 | if (next_token.id != Token.Id.LineComment) { | 1718 | if (next_token.id != Token.Id.LineComment) { |
| 1719 | switch (space) { | 1719 | switch (space) { |
| 1720 | Space.None, Space.NoNewline, Space.NoIndent => return, | 1720 | Space.None, Space.NoNewline => return, |
| 1721 | Space.Newline => { | 1721 | Space.Newline => { |
| 1722 | if (next_token.id == Token.Id.MultilineStringLiteralLine) { | 1722 | if (next_token.id == Token.Id.MultilineStringLiteralLine) { |
| 1723 | return; | 1723 | return; |
| ... | @@ -1725,7 +1725,7 @@ fn renderToken(tree: &ast.Tree, stream: var, token_index: ast.TokenIndex, indent | ... | @@ -1725,7 +1725,7 @@ fn renderToken(tree: &ast.Tree, stream: var, token_index: ast.TokenIndex, indent |
| 1725 | return stream.write("\n"); | 1725 | return stream.write("\n"); |
| 1726 | } | 1726 | } |
| 1727 | }, | 1727 | }, |
| 1728 | Space.Space => return stream.writeByte(' '), | 1728 | Space.Space, Space.SpaceOrOutdent => return stream.writeByte(' '), |
| 1729 | Space.NoComment, Space.Comma => unreachable, | 1729 | Space.NoComment, Space.Comma => unreachable, |
| 1730 | } | 1730 | } |
| 1731 | } | 1731 | } |
| ... | @@ -1756,7 +1756,11 @@ fn renderToken(tree: &ast.Tree, stream: var, token_index: ast.TokenIndex, indent | ... | @@ -1756,7 +1756,11 @@ fn renderToken(tree: &ast.Tree, stream: var, token_index: ast.TokenIndex, indent |
| 1756 | }; | 1756 | }; |
| 1757 | try stream.writeByteNTimes(' ', next_line_indent); | 1757 | try stream.writeByteNTimes(' ', next_line_indent); |
| 1758 | }, | 1758 | }, |
| 1759 | Space.Newline, Space.NoIndent => { | 1759 | Space.SpaceOrOutdent => { |
| | 1760 | try stream.writeByte('\n'); |
| | 1761 | try stream.writeByteNTimes(' ', indent); |
| | 1762 | }, |
| | 1763 | Space.Newline => { |
| 1760 | if (next_token.id == Token.Id.MultilineStringLiteralLine) { | 1764 | if (next_token.id == Token.Id.MultilineStringLiteralLine) { |
| 1761 | return; | 1765 | return; |
| 1762 | } else { | 1766 | } else { |
| ... | @@ -1783,7 +1787,7 @@ fn renderToken(tree: &ast.Tree, stream: var, token_index: ast.TokenIndex, indent | ... | @@ -1783,7 +1787,7 @@ fn renderToken(tree: &ast.Tree, stream: var, token_index: ast.TokenIndex, indent |
| 1783 | next_token = tree.tokens.at(token_index + offset); | 1787 | next_token = tree.tokens.at(token_index + offset); |
| 1784 | if (next_token.id != Token.Id.LineComment) { | 1788 | if (next_token.id != Token.Id.LineComment) { |
| 1785 | switch (space) { | 1789 | switch (space) { |
| 1786 | Space.Newline, Space.NoIndent => { | 1790 | Space.Newline => { |
| 1787 | if (next_token.id == Token.Id.MultilineStringLiteralLine) { | 1791 | if (next_token.id == Token.Id.MultilineStringLiteralLine) { |
| 1788 | return; | 1792 | return; |
| 1789 | } else { | 1793 | } else { |
| ... | @@ -1800,6 +1804,10 @@ fn renderToken(tree: &ast.Tree, stream: var, token_index: ast.TokenIndex, indent | ... | @@ -1800,6 +1804,10 @@ fn renderToken(tree: &ast.Tree, stream: var, token_index: ast.TokenIndex, indent |
| 1800 | }; | 1804 | }; |
| 1801 | try stream.writeByteNTimes(' ', next_line_indent); | 1805 | try stream.writeByteNTimes(' ', next_line_indent); |
| 1802 | }, | 1806 | }, |
| | 1807 | Space.SpaceOrOutdent => { |
| | 1808 | try stream.writeByte('\n'); |
| | 1809 | try stream.writeByteNTimes(' ', indent); |
| | 1810 | }, |
| 1803 | Space.NoNewline => {}, | 1811 | Space.NoNewline => {}, |
| 1804 | Space.NoComment, Space.Comma => unreachable, | 1812 | Space.NoComment, Space.Comma => unreachable, |
| 1805 | } | 1813 | } |