diff options
| author | Timon Kruiper <timonkruiper@gmail.com> | 2019-06-04 14:46:06 +0200 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2019-06-04 12:44:50 -0400 |
| commit | fd771ea9fb8926127b4ecb2793608b04a4430b2d (patch) | |
| tree | dd10d0711ad22b992970bccad844715adc2c6338 /std | |
| parent | 7eb82b8651e134c18fe7377dca271d6963333d61 (diff) | |
| download | zig-fd771ea9fb8926127b4ecb2793608b04a4430b2d.tar.gz zig-fd771ea9fb8926127b4ecb2793608b04a4430b2d.zip | |
Added LineComment support when MultiLines are used in ArrayInit
also added the corresponding testcase
Diffstat (limited to 'std')
| -rw-r--r-- | std/zig/parser_test.zig | 6 | ||||
| -rw-r--r-- | std/zig/render.zig | 18 |
2 files changed, 17 insertions, 7 deletions
diff --git a/std/zig/parser_test.zig b/std/zig/parser_test.zig index 2a10e95e6c..281f09d57b 100644 --- a/std/zig/parser_test.zig +++ b/std/zig/parser_test.zig @@ -2223,6 +2223,12 @@ test "zig fmt: multiline string in array" { \\ , \\ \\bbb \\ }; + \\ const Bar = [][]const u8{ // comment here + \\ \\aaa + \\ \\ + \\ , // and another comment can go here + \\ \\bbb + \\ }; \\} \\ ); diff --git a/std/zig/render.zig b/std/zig/render.zig index 3bf279eaf3..ef5c8f2346 100644 --- a/std/zig/render.zig +++ b/std/zig/render.zig @@ -727,10 +727,13 @@ fn renderExpression( } var new_indent = indent + indent_delta; - try renderToken(tree, stream, lbrace, new_indent, start_col, Space.Newline); - if (tree.tokens.at(lbrace + 1).id != Token.Id.MultilineStringLiteralLine) { + if (tree.tokens.at(tree.nextToken(lbrace)).id != Token.Id.MultilineStringLiteralLine) { + try renderToken(tree, stream, lbrace, new_indent, start_col, Space.Newline); try stream.writeByteNTimes(' ', new_indent); + } else { + new_indent -= indent_delta; + try renderToken(tree, stream, lbrace, new_indent, start_col, Space.None); } it.set(0); @@ -738,9 +741,6 @@ fn renderExpression( var col: usize = 1; while (it.next()) |expr| : (i += 1) { if (it.peek()) |next_expr| { - if (expr.*.id == ast.Node.Id.MultilineStringLiteral) { - new_indent -= indent_delta; - } try renderExpression(allocator, stream, tree, new_indent, start_col, expr.*, Space.None); const comma = tree.nextToken(expr.*.lastToken()); @@ -756,7 +756,11 @@ fn renderExpression( } col = 1; - try renderToken(tree, stream, comma, new_indent, start_col, Space.Newline); // , + if (tree.tokens.at(tree.nextToken(comma)).id != Token.Id.MultilineStringLiteralLine) { + try renderToken(tree, stream, comma, new_indent, start_col, Space.Newline); // , + } else { + try renderToken(tree, stream, comma, new_indent, start_col, Space.None); // , + } try renderExtraNewline(tree, stream, start_col, next_expr.*); if (next_expr.*.id != ast.Node.Id.MultilineStringLiteral) { @@ -766,7 +770,7 @@ fn renderExpression( try renderExpression(allocator, stream, tree, new_indent, start_col, expr.*, Space.Comma); // , } } - const last_node = it.prev() orelse unreachable; + const last_node = it.prev().?; if (last_node.*.id != ast.Node.Id.MultilineStringLiteral) { try stream.writeByteNTimes(' ', indent); } |
