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 @@...@@ -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
1test "zig fmt: respect line breaks in if-else" {19test "zig fmt: respect line breaks in if-else" {
2 try testCanonical(20 try testCanonical(
3 \\comptime {21 \\comptime {
std/zig/render.zig+14-6
...@@ -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 }
13421342
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};
16921692
...@@ -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
17171717
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 }