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" {
229229 \\comptime {
230230 \\ return []u16{'m', 's', 'y', 's', '-' // hi
231231 \\ };
232 \\ return []u16{'m', 's', 'y', 's',
233 \\ '-'};
232234 \\}
233235 ,
234236 \\comptime {
235 \\ return []u16{
236 \\ 'm',
237 \\ 's',
238 \\ 'y',
239 \\ 's',
240 \\ '-', // hi
237 \\ return []u16{ 'm', 's', 'y', 's', '-' // hi
241238 \\ };
239 \\ return []u16{ 'm', 's', 'y', 's', '-'};
242240 \\}
243241 \\
244242 );
std/zig/render.zig+28-4
......@@ -557,11 +557,11 @@ fn renderExpression(allocator: &mem.Allocator, stream: var, tree: &ast.Tree, ind
557557 };
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
564560 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
565565 var it = exprs.iterator(0);
566566 var i: usize = 0;
567567 while (it.next()) |expr| {
......@@ -597,6 +597,30 @@ fn renderExpression(allocator: &mem.Allocator, stream: var, tree: &ast.Tree, ind
597597 return;
598598 }
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
600624 var it = exprs.iterator(0);
601625 while (it.next()) |expr| {
602626