authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2018-05-28 22:41:05-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2018-05-28 22:41:05-04:00
log0d1b47362c7623ba923a6831dab0989133caf9ab
treeacd3a0b31eee42bce70e83dda8bc7d566805dee8
parent77ec81b0353eac45a66b4ed79821c8c954032345

zig fmt: if-else with comment before else


2 files changed, 32 insertions(+), 6 deletions(-)

std/zig/parser_test.zig+18
......@@ -1,3 +1,21 @@
1test "zig fmt: if-else with comment before else" {
2 try testCanonical(
3 \\comptime {
4 \\ // cexp(finite|nan +- i inf|nan) = nan + i nan
5 \\ if ((hx & 0x7fffffff) != 0x7f800000) {
6 \\ return Complex(f32).new(y - y, y - y);
7 \\ } // cexp(-inf +- i inf|nan) = 0 + i0
8 \\ else if (hx & 0x80000000 != 0) {
9 \\ return Complex(f32).new(0, 0);
10 \\ } // cexp(+inf +- i inf|nan) = inf + i nan
11 \\ else {
12 \\ return Complex(f32).new(x, y - y);
13 \\ }
14 \\}
15 \\
16 );
17}
18
119test "zig fmt: respect line breaks in if-else" {
220 try testCanonical(
321 \\comptime {
std/zig/render.zig+14-6
......@@ -1341,7 +1341,7 @@ fn renderExpression(allocator: &mem.Allocator, stream: var, tree: &ast.Tree, ind
13411341 }
13421342
13431343 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);
13451345 return renderExpression(allocator, stream, tree, indent, &@"else".base, space);
13461346 } else {
13471347 return renderExpression(allocator, stream, tree, indent, if_node.body, space);
......@@ -1685,8 +1685,8 @@ const Space = enum {
16851685 Newline,
16861686 Comma,
16871687 Space,
1688 SpaceOrOutdent,
16881689 NoNewline,
1689 NoIndent,
16901690 NoComment,
16911691};
16921692
......@@ -1717,7 +1717,7 @@ fn renderToken(tree: &ast.Tree, stream: var, token_index: ast.TokenIndex, indent
17171717
17181718 if (next_token.id != Token.Id.LineComment) {
17191719 switch (space) {
1720 Space.None, Space.NoNewline, Space.NoIndent => return,
1720 Space.None, Space.NoNewline => return,
17211721 Space.Newline => {
17221722 if (next_token.id == Token.Id.MultilineStringLiteralLine) {
17231723 return;
......@@ -1725,7 +1725,7 @@ fn renderToken(tree: &ast.Tree, stream: var, token_index: ast.TokenIndex, indent
17251725 return stream.write("\n");
17261726 }
17271727 },
1728 Space.Space => return stream.writeByte(' '),
1728 Space.Space, Space.SpaceOrOutdent => return stream.writeByte(' '),
17291729 Space.NoComment, Space.Comma => unreachable,
17301730 }
17311731 }
......@@ -1756,7 +1756,11 @@ fn renderToken(tree: &ast.Tree, stream: var, token_index: ast.TokenIndex, indent
17561756 };
17571757 try stream.writeByteNTimes(' ', next_line_indent);
17581758 },
1759 Space.Newline, Space.NoIndent => {
1759 Space.SpaceOrOutdent => {
1760 try stream.writeByte('\n');
1761 try stream.writeByteNTimes(' ', indent);
1762 },
1763 Space.Newline => {
17601764 if (next_token.id == Token.Id.MultilineStringLiteralLine) {
17611765 return;
17621766 } else {
......@@ -1783,7 +1787,7 @@ fn renderToken(tree: &ast.Tree, stream: var, token_index: ast.TokenIndex, indent
17831787 next_token = tree.tokens.at(token_index + offset);
17841788 if (next_token.id != Token.Id.LineComment) {
17851789 switch (space) {
1786 Space.Newline, Space.NoIndent => {
1790 Space.Newline => {
17871791 if (next_token.id == Token.Id.MultilineStringLiteralLine) {
17881792 return;
17891793 } else {
......@@ -1800,6 +1804,10 @@ fn renderToken(tree: &ast.Tree, stream: var, token_index: ast.TokenIndex, indent
18001804 };
18011805 try stream.writeByteNTimes(' ', next_line_indent);
18021806 },
1807 Space.SpaceOrOutdent => {
1808 try stream.writeByte('\n');
1809 try stream.writeByteNTimes(' ', indent);
1810 },
18031811 Space.NoNewline => {},
18041812 Space.NoComment, Space.Comma => unreachable,
18051813 }