Commit 1253903fef

Andrew Kelley <andrew@ziglang.org>
2021-02-23 05:33:21
zig fmt: struct literal containing a multiline expression
I modified this test case to expect different results. Now, the trailing comma on a list of struct fields is the only deciding factor, not whether or not the field init expressions contain a newline.
1 parent 8379fff
Changed files (1)
lib
lib/std/zig/parser_test.zig
@@ -1594,50 +1594,67 @@ test "zig fmt: struct literal no trailing comma" {
     );
 }
 
-//test "zig fmt: struct literal containing a multiline expression" {
-//    try testTransform(
-//        \\const a = A{ .x = if (f1()) 10 else 20 };
-//        \\const a = A{ .x = if (f1()) 10 else 20, };
-//        \\const a = A{ .x = if (f1())
-//        \\    10 else 20 };
-//        \\const a = A{ .x = if (f1()) 10 else 20, .y = f2() + 100 };
-//        \\const a = A{ .x = if (f1()) 10 else 20, .y = f2() + 100, };
-//        \\const a = A{ .x = if (f1())
-//        \\    10 else 20};
-//        \\const a = A{ .x = switch(g) {0 => "ok", else => "no"} };
-//        \\
-//    ,
-//        \\const a = A{ .x = if (f1()) 10 else 20 };
-//        \\const a = A{
-//        \\    .x = if (f1()) 10 else 20,
-//        \\};
-//        \\const a = A{
-//        \\    .x = if (f1())
-//        \\        10
-//        \\    else
-//        \\        20,
-//        \\};
-//        \\const a = A{ .x = if (f1()) 10 else 20, .y = f2() + 100 };
-//        \\const a = A{
-//        \\    .x = if (f1()) 10 else 20,
-//        \\    .y = f2() + 100,
-//        \\};
-//        \\const a = A{
-//        \\    .x = if (f1())
-//        \\        10
-//        \\    else
-//        \\        20,
-//        \\};
-//        \\const a = A{
-//        \\    .x = switch (g) {
-//        \\        0 => "ok",
-//        \\        else => "no",
-//        \\    },
-//        \\};
-//        \\
-//    );
-//}
-//
+test "zig fmt: struct literal containing a multiline expression" {
+    try testTransform(
+        \\const a = A{ .x = if (f1()) 10 else 20 };
+        \\const a = A{ .x = if (f1()) 10 else 20, };
+        \\const a = A{ .x = if (f1())
+        \\    10 else 20 };
+        \\const a = A{ .x = if (f1())
+        \\    10 else 20,};
+        \\const a = A{ .x = if (f1()) 10 else 20, .y = f2() + 100 };
+        \\const a = A{ .x = if (f1()) 10 else 20, .y = f2() + 100, };
+        \\const a = A{ .x = if (f1())
+        \\    10 else 20};
+        \\const a = A{ .x = if (f1())
+        \\    10 else 20,};
+        \\const a = A{ .x = switch(g) {0 => "ok", else => "no"} };
+        \\const a = A{ .x = switch(g) {0 => "ok", else => "no"}, };
+        \\
+    ,
+        \\const a = A{ .x = if (f1()) 10 else 20 };
+        \\const a = A{
+        \\    .x = if (f1()) 10 else 20,
+        \\};
+        \\const a = A{ .x = if (f1())
+        \\    10
+        \\else
+        \\    20 };
+        \\const a = A{
+        \\    .x = if (f1())
+        \\        10
+        \\    else
+        \\        20,
+        \\};
+        \\const a = A{ .x = if (f1()) 10 else 20, .y = f2() + 100 };
+        \\const a = A{
+        \\    .x = if (f1()) 10 else 20,
+        \\    .y = f2() + 100,
+        \\};
+        \\const a = A{ .x = if (f1())
+        \\    10
+        \\else
+        \\    20 };
+        \\const a = A{
+        \\    .x = if (f1())
+        \\        10
+        \\    else
+        \\        20,
+        \\};
+        \\const a = A{ .x = switch (g) {
+        \\    0 => "ok",
+        \\    else => "no",
+        \\} };
+        \\const a = A{
+        \\    .x = switch (g) {
+        \\        0 => "ok",
+        \\        else => "no",
+        \\    },
+        \\};
+        \\
+    );
+}
+
 //test "zig fmt: array literal with hint" {
 //    try testTransform(
 //        \\const a = []u8{