aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Kelley <superjoe30@gmail.com>2018-05-26 23:24:43 -0400
committerAndrew Kelley <superjoe30@gmail.com>2018-05-26 23:25:04 -0400
commit3fed10883bd6916147cce8060949040770532daf (patch)
tree998ac9a08c810cd7bde81a7d70ca3b3a9155aac8
parentafdfbc0367b261ea43d5618027e23022c01e2c93 (diff)
downloadzig-3fed10883bd6916147cce8060949040770532daf.tar.gz
zig-3fed10883bd6916147cce8060949040770532daf.zip
zig fmt: array literals with no trailing comma all on one line
-rw-r--r--std/zig/parser_test.zig10
-rw-r--r--std/zig/render.zig32
2 files changed, 32 insertions, 10 deletions
diff --git a/std/zig/parser_test.zig b/std/zig/parser_test.zig
index a2ee77796b..e83f99c972 100644
--- a/std/zig/parser_test.zig
+++ b/std/zig/parser_test.zig
@@ -229,16 +229,14 @@ test "zig fmt: add trailing comma to array literal" {
\\comptime {
\\ return []u16{'m', 's', 'y', 's', '-' // hi
\\ };
+ \\ return []u16{'m', 's', 'y', 's',
+ \\ '-'};
\\}
,
\\comptime {
- \\ return []u16{
- \\ 'm',
- \\ 's',
- \\ 'y',
- \\ 's',
- \\ '-', // hi
+ \\ return []u16{ 'm', 's', 'y', 's', '-' // hi
\\ };
+ \\ return []u16{ 'm', 's', 'y', 's', '-'};
\\}
\\
);
diff --git a/std/zig/render.zig b/std/zig/render.zig
index 49138e0e78..9805b7cf75 100644
--- a/std/zig/render.zig
+++ b/std/zig/render.zig
@@ -557,11 +557,11 @@ fn renderExpression(allocator: &mem.Allocator, stream: var, tree: &ast.Tree, ind
};
- const new_indent = indent + indent_delta;
- try renderToken(tree, stream, lbrace, new_indent, Space.Newline);
- try stream.writeByteNTimes(' ', new_indent);
-
if (maybe_row_size) |row_size| {
+ const new_indent = indent + indent_delta;
+ try renderToken(tree, stream, lbrace, new_indent, Space.Newline);
+ try stream.writeByteNTimes(' ', new_indent);
+
var it = exprs.iterator(0);
var i: usize = 0;
while (it.next()) |expr| {
@@ -597,6 +597,30 @@ fn renderExpression(allocator: &mem.Allocator, stream: var, tree: &ast.Tree, ind
return;
}
+ const src_has_trailing_comma = blk: {
+ const maybe_comma = tree.prevToken(suffix_op.rtoken);
+ break :blk tree.tokens.at(maybe_comma).id == Token.Id.Comma;
+ };
+ if (!src_has_trailing_comma) {
+ try renderToken(tree, stream, lbrace, indent, Space.Space);
+ var it = exprs.iterator(0);
+ while (it.next()) |expr| {
+ try renderExpression(allocator, stream, tree, indent, expr.*, Space.None);
+
+ if (it.peek()) |next_expr| {
+ const comma = tree.nextToken(expr.*.lastToken());
+ try renderToken(tree, stream, comma, indent, Space.Space); // ,
+ }
+ }
+
+ try renderToken(tree, stream, suffix_op.rtoken, indent, space);
+ return;
+ }
+
+ const new_indent = indent + indent_delta;
+ try renderToken(tree, stream, lbrace, new_indent, Space.Newline);
+ try stream.writeByteNTimes(' ', new_indent);
+
var it = exprs.iterator(0);
while (it.next()) |expr| {