| ... | ... | @@ -24,7 +24,7 @@ pub fn render(allocator: *mem.Allocator, stream: anytype, tree: *ast.Tree) (meta |
| 24 | 24 | |
| 25 | 25 | var s = stream.*; |
| 26 | 26 | var change_detection_stream = std.io.changeDetectionStream(tree.source, &s); |
| 27 | | var auto_indenting_stream = std.io.autoIndentingStream(indent_delta, &change_detection_stream, allocator); |
| 27 | var auto_indenting_stream = std.io.autoIndentingStream(indent_delta, &change_detection_stream); |
| 28 | 28 | defer auto_indenting_stream.deinit(); |
| 29 | 29 | |
| 30 | 30 | try renderRoot(allocator, &auto_indenting_stream, tree); |
| ... | ... | @@ -389,11 +389,11 @@ fn renderExpression( |
| 389 | 389 | } |
| 390 | 390 | |
| 391 | 391 | if (block.statements.len == 0) { |
| 392 | | try stream.pushIndentNextLine(); |
| 392 | stream.pushIndentNextLine(); |
| 393 | 393 | defer stream.popIndent(); |
| 394 | 394 | try renderToken(tree, stream, block.lbrace, Space.None); |
| 395 | 395 | } else { |
| 396 | | try stream.pushIndentNextLine(); |
| 396 | stream.pushIndentNextLine(); |
| 397 | 397 | defer stream.popIndent(); |
| 398 | 398 | |
| 399 | 399 | try renderToken(tree, stream, block.lbrace, Space.Newline); |
| ... | ... | @@ -463,7 +463,7 @@ fn renderExpression( |
| 463 | 463 | try renderExpression(allocator, stream, tree, payload, Space.Space); |
| 464 | 464 | } |
| 465 | 465 | |
| 466 | | try stream.pushIndentOneShot(); |
| 466 | stream.pushIndentOneShot(); |
| 467 | 467 | return renderExpression(allocator, stream, tree, infix_op_node.rhs, space); |
| 468 | 468 | }, |
| 469 | 469 | |
| ... | ... | @@ -524,7 +524,7 @@ fn renderExpression( |
| 524 | 524 | }; |
| 525 | 525 | |
| 526 | 526 | try renderToken(tree, stream, infix_op_node.op_token, after_op_space); |
| 527 | | try stream.pushIndentOneShot(); |
| 527 | stream.pushIndentOneShot(); |
| 528 | 528 | return renderExpression(allocator, stream, tree, infix_op_node.rhs, space); |
| 529 | 529 | }, |
| 530 | 530 | |
| ... | ... | @@ -718,7 +718,7 @@ fn renderExpression( |
| 718 | 718 | } |
| 719 | 719 | |
| 720 | 720 | { |
| 721 | | try stream.pushIndent(); |
| 721 | stream.pushIndent(); |
| 722 | 722 | defer stream.popIndent(); |
| 723 | 723 | try renderToken(tree, stream, lbrace, Space.None); |
| 724 | 724 | } |
| ... | ... | @@ -783,7 +783,7 @@ fn renderExpression( |
| 783 | 783 | |
| 784 | 784 | // Null stream for counting the printed length of each expression |
| 785 | 785 | var counting_stream = std.io.countingOutStream(std.io.null_out_stream); |
| 786 | | var auto_indenting_stream = std.io.autoIndentingStream(indent_delta, &counting_stream, allocator); |
| 786 | var auto_indenting_stream = std.io.autoIndentingStream(indent_delta, &counting_stream); |
| 787 | 787 | defer auto_indenting_stream.deinit(); |
| 788 | 788 | |
| 789 | 789 | for (exprs) |expr, i| { |
| ... | ... | @@ -796,7 +796,7 @@ fn renderExpression( |
| 796 | 796 | } |
| 797 | 797 | |
| 798 | 798 | { |
| 799 | | try stream.pushIndentNextLine(); |
| 799 | stream.pushIndentNextLine(); |
| 800 | 800 | defer stream.popIndent(); |
| 801 | 801 | try renderToken(tree, stream, lbrace, Space.Newline); |
| 802 | 802 | |
| ... | ... | @@ -880,7 +880,7 @@ fn renderExpression( |
| 880 | 880 | } |
| 881 | 881 | |
| 882 | 882 | { |
| 883 | | try stream.pushIndentNextLine(); |
| 883 | stream.pushIndentNextLine(); |
| 884 | 884 | defer stream.popIndent(); |
| 885 | 885 | try renderToken(tree, stream, lbrace, Space.None); |
| 886 | 886 | } |
| ... | ... | @@ -902,7 +902,7 @@ fn renderExpression( |
| 902 | 902 | // render field expressions until a LF is found |
| 903 | 903 | for (field_inits) |field_init| { |
| 904 | 904 | var find_stream = std.io.findByteOutStream('\n', &std.io.null_out_stream); |
| 905 | | var auto_indenting_stream = std.io.autoIndentingStream(indent_delta, &find_stream, allocator); |
| 905 | var auto_indenting_stream = std.io.autoIndentingStream(indent_delta, &find_stream); |
| 906 | 906 | defer auto_indenting_stream.deinit(); |
| 907 | 907 | |
| 908 | 908 | try renderExpression(allocator, &auto_indenting_stream, tree, field_init, Space.None); |
| ... | ... | @@ -963,7 +963,7 @@ fn renderExpression( |
| 963 | 963 | .node => |node| try renderExpression(allocator, stream, tree, node, Space.None), |
| 964 | 964 | } |
| 965 | 965 | |
| 966 | | try stream.pushIndentNextLine(); |
| 966 | stream.pushIndentNextLine(); |
| 967 | 967 | defer stream.popIndent(); |
| 968 | 968 | |
| 969 | 969 | try renderToken(tree, stream, lbrace, Space.Newline); |
| ... | ... | @@ -1011,7 +1011,7 @@ fn renderExpression( |
| 1011 | 1011 | |
| 1012 | 1012 | const params = call.params(); |
| 1013 | 1013 | for (params) |param_node, i| { |
| 1014 | | try stream.pushIndent(); |
| 1014 | stream.pushIndent(); |
| 1015 | 1015 | defer stream.popIndent(); |
| 1016 | 1016 | |
| 1017 | 1017 | if (i + 1 < params.len) { |
| ... | ... | @@ -1031,7 +1031,7 @@ fn renderExpression( |
| 1031 | 1031 | |
| 1032 | 1032 | const params = call.params(); |
| 1033 | 1033 | for (params) |param_node, i| { |
| 1034 | | if (param_node.*.tag == .MultilineStringLiteral) try stream.pushIndentOneShot(); |
| 1034 | if (param_node.*.tag == .MultilineStringLiteral) stream.pushIndentOneShot(); |
| 1035 | 1035 | |
| 1036 | 1036 | try renderExpression(allocator, stream, tree, param_node, Space.None); |
| 1037 | 1037 | |
| ... | ... | @@ -1058,7 +1058,7 @@ fn renderExpression( |
| 1058 | 1058 | { |
| 1059 | 1059 | const new_space = if (ends_with_comment) Space.Newline else Space.None; |
| 1060 | 1060 | |
| 1061 | | try stream.pushIndent(); |
| 1061 | stream.pushIndent(); |
| 1062 | 1062 | defer stream.popIndent(); |
| 1063 | 1063 | try renderExpression(allocator, stream, tree, suffix_op.index_expr, new_space); |
| 1064 | 1064 | } |
| ... | ... | @@ -1194,7 +1194,7 @@ fn renderExpression( |
| 1194 | 1194 | |
| 1195 | 1195 | try renderToken(tree, stream, grouped_expr.lparen, Space.None); |
| 1196 | 1196 | { |
| 1197 | | try stream.pushIndentOneShot(); |
| 1197 | stream.pushIndentOneShot(); |
| 1198 | 1198 | try renderExpression(allocator, stream, tree, grouped_expr.expr, Space.None); |
| 1199 | 1199 | } |
| 1200 | 1200 | return renderToken(tree, stream, grouped_expr.rparen, space); |
| ... | ... | @@ -1254,7 +1254,7 @@ fn renderExpression( |
| 1254 | 1254 | |
| 1255 | 1255 | if (container_decl.fields_and_decls_len == 0) { |
| 1256 | 1256 | { |
| 1257 | | try stream.pushIndentNextLine(); |
| 1257 | stream.pushIndentNextLine(); |
| 1258 | 1258 | defer stream.popIndent(); |
| 1259 | 1259 | try renderToken(tree, stream, container_decl.lbrace_token, Space.None); // { |
| 1260 | 1260 | } |
| ... | ... | @@ -1289,7 +1289,7 @@ fn renderExpression( |
| 1289 | 1289 | |
| 1290 | 1290 | if (src_has_trailing_comma or !src_has_only_fields) { |
| 1291 | 1291 | // One declaration per line |
| 1292 | | try stream.pushIndentNextLine(); |
| 1292 | stream.pushIndentNextLine(); |
| 1293 | 1293 | defer stream.popIndent(); |
| 1294 | 1294 | try renderToken(tree, stream, container_decl.lbrace_token, .Newline); // { |
| 1295 | 1295 | |
| ... | ... | @@ -1305,7 +1305,7 @@ fn renderExpression( |
| 1305 | 1305 | // their own line |
| 1306 | 1306 | try renderToken(tree, stream, container_decl.lbrace_token, .Newline); // { |
| 1307 | 1307 | |
| 1308 | | try stream.pushIndent(); |
| 1308 | stream.pushIndent(); |
| 1309 | 1309 | defer stream.popIndent(); |
| 1310 | 1310 | |
| 1311 | 1311 | for (fields_and_decls) |decl, i| { |
| ... | ... | @@ -1361,7 +1361,7 @@ fn renderExpression( |
| 1361 | 1361 | |
| 1362 | 1362 | if (src_has_trailing_comma) { |
| 1363 | 1363 | { |
| 1364 | | try stream.pushIndent(); |
| 1364 | stream.pushIndent(); |
| 1365 | 1365 | defer stream.popIndent(); |
| 1366 | 1366 | |
| 1367 | 1367 | try renderToken(tree, stream, lbrace, Space.Newline); // { |
| ... | ... | @@ -1451,7 +1451,7 @@ fn renderExpression( |
| 1451 | 1451 | } |
| 1452 | 1452 | } else { |
| 1453 | 1453 | // one param per line |
| 1454 | | try stream.pushIndent(); |
| 1454 | stream.pushIndent(); |
| 1455 | 1455 | defer stream.popIndent(); |
| 1456 | 1456 | try renderToken(tree, stream, lparen, Space.Newline); // ( |
| 1457 | 1457 | |
| ... | ... | @@ -1530,7 +1530,7 @@ fn renderExpression( |
| 1530 | 1530 | } |
| 1531 | 1531 | } else { |
| 1532 | 1532 | // one param per line |
| 1533 | | try stream.pushIndent(); |
| 1533 | stream.pushIndent(); |
| 1534 | 1534 | defer stream.popIndent(); |
| 1535 | 1535 | try renderToken(tree, stream, lparen, Space.Newline); // ( |
| 1536 | 1536 | |
| ... | ... | @@ -1627,7 +1627,7 @@ fn renderExpression( |
| 1627 | 1627 | try renderToken(tree, stream, rparen, Space.Space); // ) |
| 1628 | 1628 | |
| 1629 | 1629 | { |
| 1630 | | try stream.pushIndentNextLine(); |
| 1630 | stream.pushIndentNextLine(); |
| 1631 | 1631 | defer stream.popIndent(); |
| 1632 | 1632 | try renderToken(tree, stream, lbrace, Space.Newline); // { |
| 1633 | 1633 | |
| ... | ... | @@ -1711,7 +1711,7 @@ fn renderExpression( |
| 1711 | 1711 | if (same_line) { |
| 1712 | 1712 | return renderExpression(allocator, stream, tree, else_node.body, space); |
| 1713 | 1713 | } else { |
| 1714 | | try stream.pushIndent(); |
| 1714 | stream.pushIndent(); |
| 1715 | 1715 | defer stream.popIndent(); |
| 1716 | 1716 | return renderExpression(allocator, stream, tree, else_node.body, space); |
| 1717 | 1717 | } |
| ... | ... | @@ -1775,7 +1775,7 @@ fn renderExpression( |
| 1775 | 1775 | } |
| 1776 | 1776 | |
| 1777 | 1777 | { |
| 1778 | | if (!body_is_block) try stream.pushIndent(); |
| 1778 | if (!body_is_block) stream.pushIndent(); |
| 1779 | 1779 | defer if (!body_is_block) stream.popIndent(); |
| 1780 | 1780 | try renderExpression(allocator, stream, tree, while_node.body, after_body_space); |
| 1781 | 1781 | } |
| ... | ... | @@ -1826,7 +1826,7 @@ fn renderExpression( |
| 1826 | 1826 | }; |
| 1827 | 1827 | |
| 1828 | 1828 | { |
| 1829 | | if (!body_on_same_line) try stream.pushIndent(); |
| 1829 | if (!body_on_same_line) stream.pushIndent(); |
| 1830 | 1830 | defer if (!body_on_same_line) stream.popIndent(); |
| 1831 | 1831 | try renderExpression(allocator, stream, tree, for_node.body, space_after_body); // { body } |
| 1832 | 1832 | } |
| ... | ... | @@ -1882,7 +1882,7 @@ fn renderExpression( |
| 1882 | 1882 | const else_is_block = nodeIsBlock(@"else".body); |
| 1883 | 1883 | |
| 1884 | 1884 | { |
| 1885 | | try stream.pushIndent(); |
| 1885 | stream.pushIndent(); |
| 1886 | 1886 | defer stream.popIndent(); |
| 1887 | 1887 | try renderExpression(allocator, stream, tree, if_node.body, Space.Newline); |
| 1888 | 1888 | } |
| ... | ... | @@ -1903,12 +1903,12 @@ fn renderExpression( |
| 1903 | 1903 | try renderExpression(allocator, stream, tree, payload, Space.Newline); |
| 1904 | 1904 | } |
| 1905 | 1905 | |
| 1906 | | try stream.pushIndent(); |
| 1906 | stream.pushIndent(); |
| 1907 | 1907 | defer stream.popIndent(); |
| 1908 | 1908 | return renderExpression(allocator, stream, tree, @"else".body, space); |
| 1909 | 1909 | } |
| 1910 | 1910 | } else { |
| 1911 | | try stream.pushIndent(); |
| 1911 | stream.pushIndent(); |
| 1912 | 1912 | defer stream.popIndent(); |
| 1913 | 1913 | return renderExpression(allocator, stream, tree, if_node.body, space); |
| 1914 | 1914 | } |
| ... | ... | @@ -1949,7 +1949,7 @@ fn renderExpression( |
| 1949 | 1949 | } |
| 1950 | 1950 | |
| 1951 | 1951 | asmblk: { |
| 1952 | | try stream.pushIndent(); |
| 1952 | stream.pushIndent(); |
| 1953 | 1953 | defer stream.popIndent(); |
| 1954 | 1954 | |
| 1955 | 1955 | if (asm_node.outputs.len == 0 and asm_node.inputs.len == 0 and asm_node.clobbers.len == 0) { |
| ... | ... | @@ -1968,7 +1968,7 @@ fn renderExpression( |
| 1968 | 1968 | } else blk: { |
| 1969 | 1969 | try renderToken(tree, stream, colon1, Space.Space); // : |
| 1970 | 1970 | |
| 1971 | | try stream.pushIndentN(2); |
| 1971 | stream.pushIndent(); |
| 1972 | 1972 | defer stream.popIndent(); |
| 1973 | 1973 | |
| 1974 | 1974 | for (asm_node.outputs) |*asm_output, i| { |
| ... | ... | @@ -1999,7 +1999,7 @@ fn renderExpression( |
| 1999 | 1999 | break :blk tree.nextToken(colon2); |
| 2000 | 2000 | } else blk: { |
| 2001 | 2001 | try renderToken(tree, stream, colon2, Space.Space); // : |
| 2002 | | try stream.pushIndentN(2); |
| 2002 | stream.pushIndent(); |
| 2003 | 2003 | defer stream.popIndent(); |
| 2004 | 2004 | for (asm_node.inputs) |*asm_input, i| { |
| 2005 | 2005 | if (i + 1 < asm_node.inputs.len) { |
| ... | ... | @@ -2025,7 +2025,7 @@ fn renderExpression( |
| 2025 | 2025 | }; |
| 2026 | 2026 | |
| 2027 | 2027 | try renderToken(tree, stream, colon3, Space.Space); // : |
| 2028 | | try stream.pushIndentN(2); |
| 2028 | stream.pushIndent(); |
| 2029 | 2029 | defer stream.popIndent(); |
| 2030 | 2030 | for (asm_node.clobbers) |clobber_node, i| { |
| 2031 | 2031 | if (i + 1 >= asm_node.clobbers.len) { |
| ... | ... | @@ -2078,7 +2078,7 @@ fn renderArrayType( |
| 2078 | 2078 | const new_space = if (ends_with_comment) Space.Newline else Space.None; |
| 2079 | 2079 | { |
| 2080 | 2080 | const do_indent = (starts_with_comment or ends_with_comment); |
| 2081 | | if (do_indent) try stream.pushIndent(); |
| 2081 | if (do_indent) stream.pushIndent(); |
| 2082 | 2082 | defer if (do_indent) stream.popIndent(); |
| 2083 | 2083 | |
| 2084 | 2084 | try renderToken(tree, stream, lbracket, Space.None); // [ |
| ... | ... | @@ -2212,7 +2212,7 @@ fn renderVarDecl( |
| 2212 | 2212 | if (var_decl.getTrailer("init_node")) |init_node| { |
| 2213 | 2213 | const s = if (init_node.tag == .MultilineStringLiteral) Space.None else Space.Space; |
| 2214 | 2214 | try renderToken(tree, stream, var_decl.getTrailer("eq_token").?, s); // = |
| 2215 | | try stream.pushIndentOneShot(); |
| 2215 | stream.pushIndentOneShot(); |
| 2216 | 2216 | try renderExpression(allocator, stream, tree, init_node, Space.None); |
| 2217 | 2217 | } |
| 2218 | 2218 | |