authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2018-04-12 21:23:18-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2018-04-12 21:23:18-04:00
logd4572d1140bb22aaeb587a66d3eee7bbdf162b1c
tree8ae3ac8f31b6ab03adc203f63e1ecefe599afc4f
parent373b3586a1b1d6a3989220a8aac0d1c30f9fdb3a

zig fmt: container init fields each on own line

See #911

1 files changed, 66 insertions(+), 25 deletions(-)

std/zig/parser.zig+66-25
......@@ -3579,33 +3579,45 @@ pub const Parser = struct {
35793579 try stack.append(RenderState { .Expression = suffix_op.lhs });
35803580 },
35813581 ast.NodeSuffixOp.SuffixOp.StructInitializer => |field_inits| {
3582 try stack.append(RenderState { .Text = " }"});
3582 if (field_inits.len == 0) {
3583 try stack.append(RenderState { .Text = "{}" });
3584 try stack.append(RenderState { .Expression = suffix_op.lhs });
3585 continue;
3586 }
3587 try stack.append(RenderState { .Text = "}"});
3588 try stack.append(RenderState.PrintIndent);
3589 try stack.append(RenderState { .Indent = indent });
35833590 var i = field_inits.len;
35843591 while (i != 0) {
35853592 i -= 1;
35863593 const field_init = field_inits.at(i);
3594 try stack.append(RenderState { .Text = ",\n" });
35873595 try stack.append(RenderState { .FieldInitializer = field_init });
3588 try stack.append(RenderState { .Text = " " });
3589 if (i != 0) {
3590 try stack.append(RenderState { .Text = "," });
3591 }
3596 try stack.append(RenderState.PrintIndent);
35923597 }
3593 try stack.append(RenderState { .Text = "{"});
3598 try stack.append(RenderState { .Indent = indent + indent_delta });
3599 try stack.append(RenderState { .Text = " {\n"});
35943600 try stack.append(RenderState { .Expression = suffix_op.lhs });
35953601 },
35963602 ast.NodeSuffixOp.SuffixOp.ArrayInitializer => |exprs| {
3597 try stack.append(RenderState { .Text = " }"});
3603 if (exprs.len == 0) {
3604 try stack.append(RenderState { .Text = "{}" });
3605 try stack.append(RenderState { .Expression = suffix_op.lhs });
3606 continue;
3607 }
3608 try stack.append(RenderState { .Text = "}"});
3609 try stack.append(RenderState.PrintIndent);
3610 try stack.append(RenderState { .Indent = indent });
35983611 var i = exprs.len;
35993612 while (i != 0) {
36003613 i -= 1;
36013614 const expr = exprs.at(i);
3615 try stack.append(RenderState { .Text = ",\n" });
36023616 try stack.append(RenderState { .Expression = expr });
3603 try stack.append(RenderState { .Text = " " });
3604 if (i != 0) {
3605 try stack.append(RenderState { .Text = "," });
3606 }
3617 try stack.append(RenderState.PrintIndent);
36073618 }
3608 try stack.append(RenderState { .Text = "{"});
3619 try stack.append(RenderState { .Indent = indent + indent_delta });
3620 try stack.append(RenderState { .Text = " {\n"});
36093621 try stack.append(RenderState { .Expression = suffix_op.lhs });
36103622 },
36113623 }
......@@ -4562,10 +4574,10 @@ test "zig fmt: precedence" {
45624574 \\ (a!b)();
45634575 \\ !a!b;
45644576 \\ !(a!b);
4565 \\ !a{ };
4566 \\ !(a{ });
4567 \\ a + b{ };
4568 \\ (a + b){ };
4577 \\ !a{};
4578 \\ !(a{});
4579 \\ a + b{};
4580 \\ (a + b){};
45694581 \\ a << b + c;
45704582 \\ (a << b) + c;
45714583 \\ a & b << c;
......@@ -4805,9 +4817,15 @@ test "zig fmt: error set declaration" {
48054817test "zig fmt: arrays" {
48064818 try testCanonical(
48074819 \\test "test array" {
4808 \\ const a: [2]u8 = [2]u8{ 1, 2 };
4809 \\ const a: [2]u8 = []u8{ 1, 2 };
4810 \\ const a: [0]u8 = []u8{ };
4820 \\ const a: [2]u8 = [2]u8 {
4821 \\ 1,
4822 \\ 2,
4823 \\ };
4824 \\ const a: [2]u8 = []u8 {
4825 \\ 1,
4826 \\ 2,
4827 \\ };
4828 \\ const a: [0]u8 = []u8{};
48114829 \\}
48124830 \\
48134831 );
......@@ -4815,10 +4833,18 @@ test "zig fmt: arrays" {
48154833
48164834test "zig fmt: container initializers" {
48174835 try testCanonical(
4818 \\const a1 = []u8{ };
4819 \\const a2 = []u8{ 1, 2, 3, 4 };
4820 \\const s1 = S{ };
4821 \\const s2 = S{ .a = 1, .b = 2 };
4836 \\const a1 = []u8{};
4837 \\const a2 = []u8 {
4838 \\ 1,
4839 \\ 2,
4840 \\ 3,
4841 \\ 4,
4842 \\};
4843 \\const s1 = S{};
4844 \\const s2 = S {
4845 \\ .a = 1,
4846 \\ .b = 2,
4847 \\};
48224848 \\
48234849 );
48244850}
......@@ -4883,7 +4909,9 @@ test "zig fmt: switch" {
48834909 \\ Float: f64
48844910 \\ };
48854911 \\
4886 \\ const u = Union{ .Int = 0 };
4912 \\ const u = Union {
4913 \\ .Int = 0,
4914 \\ };
48874915 \\ switch (u) {
48884916 \\ Union.Int => |int| {},
48894917 \\ Union.Float => |*float| unreachable
......@@ -4962,7 +4990,11 @@ test "zig fmt: while" {
49624990test "zig fmt: for" {
49634991 try testCanonical(
49644992 \\test "for" {
4965 \\ const a = []u8{ 1, 2, 3 };
4993 \\ const a = []u8 {
4994 \\ 1,
4995 \\ 2,
4996 \\ 3,
4997 \\ };
49664998 \\ for (a) |v| {
49674999 \\ continue;
49685000 \\ }
......@@ -5192,3 +5224,12 @@ test "zig fmt: error return" {
51925224 \\
51935225 );
51945226}
5227
5228test "zig fmt: struct literals with fields on each line" {
5229 try testCanonical(
5230 \\var self = BufSet {
5231 \\ .hash_map = BufSetHashMap.init(a),
5232 \\};
5233 \\
5234 );
5235}