aboutsummaryrefslogtreecommitdiff
path: root/std
diff options
context:
space:
mode:
authorAndrew Kelley <superjoe30@gmail.com>2018-04-30 18:30:47 -0400
committerAndrew Kelley <superjoe30@gmail.com>2018-04-30 18:30:47 -0400
commiteed49a210474af98f64961ed603feb6dfa60acde (patch)
tree94d1ddbfc5aac38476ed1edd74b27f19b9767921 /std
parent1d06915f275ac59918c32206ad944fd10cc997d4 (diff)
downloadzig-eed49a210474af98f64961ed603feb6dfa60acde.tar.gz
zig-eed49a210474af98f64961ed603feb6dfa60acde.zip
zig fmt: aggregate type init with only 1 field
Diffstat (limited to 'std')
-rw-r--r--std/zig/parser.zig9
-rw-r--r--std/zig/parser_test.zig14
2 files changed, 20 insertions, 3 deletions
diff --git a/std/zig/parser.zig b/std/zig/parser.zig
index 12b1c315e8..5e3f3bff59 100644
--- a/std/zig/parser.zig
+++ b/std/zig/parser.zig
@@ -3872,6 +3872,15 @@ pub const Parser = struct {
try stack.append(RenderState { .Expression = suffix_op.lhs });
continue;
}
+ if (field_inits.len == 1) {
+ const field_init = field_inits.at(0);
+
+ try stack.append(RenderState { .Text = "}" });
+ try stack.append(RenderState { .FieldInitializer = field_init });
+ try stack.append(RenderState { .Text = " {" });
+ try stack.append(RenderState { .Expression = suffix_op.lhs });
+ continue;
+ }
try stack.append(RenderState { .Text = "}"});
try stack.append(RenderState.PrintIndent);
try stack.append(RenderState { .Indent = indent });
diff --git a/std/zig/parser_test.zig b/std/zig/parser_test.zig
index f8b89ebe44..8b0002e6bd 100644
--- a/std/zig/parser_test.zig
+++ b/std/zig/parser_test.zig
@@ -1,3 +1,12 @@
+test "zig fmt: aggregate type init with only 1 field" {
+ try testCanonical(
+ \\comptime {
+ \\ assert(bar(Payload {.A = 1234}) == -10);
+ \\}
+ \\
+ );
+}
+
test "zig fmt: union(enum(u32)) with assigned enum values" {
try testCanonical(
\\const MultipleChoice = union(enum(u32)) {
@@ -709,9 +718,7 @@ test "zig fmt: switch" {
\\ Float: f64,
\\ };
\\
- \\ const u = Union {
- \\ .Int = 0,
- \\ };
+ \\ const u = Union {.Int = 0};
\\ switch (u) {
\\ Union.Int => |int| {},
\\ Union.Float => |*float| unreachable,
@@ -1029,6 +1036,7 @@ test "zig fmt: struct literals with fields on each line" {
try testCanonical(
\\var self = BufSet {
\\ .hash_map = BufSetHashMap.init(a),
+ \\ .hash_map2 = xyz,
\\};
\\
);