authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2018-05-26 23:24:43-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2018-05-26 23:25:04-04:00
log3fed10883bd6916147cce8060949040770532daf
tree998ac9a08c810cd7bde81a7d70ca3b3a9155aac8
parentafdfbc0367b261ea43d5618027e23022c01e2c93

zig fmt: array literals with no trailing comma all on one line


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

std/zig/parser_test.zig+4-6
...@@ -229,16 +229,14 @@ test "zig fmt: add trailing comma to array literal" {...@@ -229,16 +229,14 @@ test "zig fmt: add trailing comma to array literal" {
229 \\comptime {229 \\comptime {
230 \\ return []u16{'m', 's', 'y', 's', '-' // hi230 \\ return []u16{'m', 's', 'y', 's', '-' // hi
231 \\ };231 \\ };
232 \\ return []u16{'m', 's', 'y', 's',
233 \\ '-'};
232 \\}234 \\}
233 ,235 ,
234 \\comptime {236 \\comptime {
235 \\ return []u16{237 \\ return []u16{ 'm', 's', 'y', 's', '-' // hi
236 \\ 'm',
237 \\ 's',
238 \\ 'y',
239 \\ 's',
240 \\ '-', // hi
241 \\ };238 \\ };
239 \\ return []u16{ 'm', 's', 'y', 's', '-'};
242 \\}240 \\}
243 \\241 \\
244 );242 );
std/zig/render.zig+28-4
...@@ -557,11 +557,11 @@ fn renderExpression(allocator: &mem.Allocator, stream: var, tree: &ast.Tree, ind...@@ -557,11 +557,11 @@ fn renderExpression(allocator: &mem.Allocator, stream: var, tree: &ast.Tree, ind
557 };557 };
558558
559559
560 const new_indent = indent + indent_delta;
561 try renderToken(tree, stream, lbrace, new_indent, Space.Newline);
562 try stream.writeByteNTimes(' ', new_indent);
563
564 if (maybe_row_size) |row_size| {560 if (maybe_row_size) |row_size| {
561 const new_indent = indent + indent_delta;
562 try renderToken(tree, stream, lbrace, new_indent, Space.Newline);
563 try stream.writeByteNTimes(' ', new_indent);
564
565 var it = exprs.iterator(0);565 var it = exprs.iterator(0);
566 var i: usize = 0;566 var i: usize = 0;
567 while (it.next()) |expr| {567 while (it.next()) |expr| {
...@@ -597,6 +597,30 @@ fn renderExpression(allocator: &mem.Allocator, stream: var, tree: &ast.Tree, ind...@@ -597,6 +597,30 @@ fn renderExpression(allocator: &mem.Allocator, stream: var, tree: &ast.Tree, ind
597 return;597 return;
598 }598 }
599599
600 const src_has_trailing_comma = blk: {
601 const maybe_comma = tree.prevToken(suffix_op.rtoken);
602 break :blk tree.tokens.at(maybe_comma).id == Token.Id.Comma;
603 };
604 if (!src_has_trailing_comma) {
605 try renderToken(tree, stream, lbrace, indent, Space.Space);
606 var it = exprs.iterator(0);
607 while (it.next()) |expr| {
608 try renderExpression(allocator, stream, tree, indent, expr.*, Space.None);
609
610 if (it.peek()) |next_expr| {
611 const comma = tree.nextToken(expr.*.lastToken());
612 try renderToken(tree, stream, comma, indent, Space.Space); // ,
613 }
614 }
615
616 try renderToken(tree, stream, suffix_op.rtoken, indent, space);
617 return;
618 }
619
620 const new_indent = indent + indent_delta;
621 try renderToken(tree, stream, lbrace, new_indent, Space.Newline);
622 try stream.writeByteNTimes(' ', new_indent);
623
600 var it = exprs.iterator(0);624 var it = exprs.iterator(0);
601 while (it.next()) |expr| {625 while (it.next()) |expr| {
602626