Commit 85ca611af1
Changed files (2)
std
std/zig/parser_test.zig
@@ -1,3 +1,12 @@
+test "zig fmt: nested struct literal with one item" {
+ try testCanonical(
+ \\const a = foo{
+ \\ .item = bar{ .a = b },
+ \\};
+ \\
+ );
+}
+
test "zig fmt: switch cases trailing comma" {
try testTransform(
\\fn switch_cases(x: i32) void {
std/zig/render.zig
@@ -431,12 +431,18 @@ fn renderExpression(allocator: &mem.Allocator, stream: var, tree: &ast.Tree, ind
return;
}
- if (field_inits.len == 1) {
- const field_init = field_inits.at(0).*;
+ if (field_inits.len == 1) blk: {
+ const field_init = ??field_inits.at(0).*.cast(ast.Node.FieldInitializer);
+
+ if (field_init.expr.cast(ast.Node.SuffixOp)) |nested_suffix_op| {
+ if (nested_suffix_op.op == ast.Node.SuffixOp.Op.StructInitializer) {
+ break :blk;
+ }
+ }
try renderExpression(allocator, stream, tree, indent, suffix_op.lhs, Space.None);
try renderToken(tree, stream, lbrace, indent, Space.Space);
- try renderExpression(allocator, stream, tree, indent, field_init, Space.Space);
+ try renderExpression(allocator, stream, tree, indent, &field_init.base, Space.Space);
try renderToken(tree, stream, suffix_op.rtoken, indent, space);
return;
}