From 515d4920e79ca3c631f243f6a1d7fb6b48aa91cd Mon Sep 17 00:00:00 2001 From: Isaac Freund Date: Wed, 10 Feb 2021 19:19:58 +0100 Subject: [PATCH] zig fmt: fix 0 element struct and array init --- lib/std/zig/ast.zig | 7 +++++-- lib/std/zig/parser_test.zig | 27 +++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/lib/std/zig/ast.zig b/lib/std/zig/ast.zig index 527c358103..358c40b28a 100644 --- a/lib/std/zig/ast.zig +++ b/lib/std/zig/ast.zig @@ -796,8 +796,11 @@ pub const Tree = struct { .StructInitOne, => { end_offset += 1; // rbrace - n = datas[n].rhs; - assert(n != 0); + if (datas[n].rhs == 0) { + return main_tokens[n] + end_offset; + } else { + n = datas[n].rhs; + } }, .SliceOpen, .CallOneComma, diff --git a/lib/std/zig/parser_test.zig b/lib/std/zig/parser_test.zig index 944722c296..bc1a36d7e3 100644 --- a/lib/std/zig/parser_test.zig +++ b/lib/std/zig/parser_test.zig @@ -464,6 +464,15 @@ test "zig fmt: anon literal in array" { // ); //} +test "zig fmt: anon struct literal 0 element" { + try testCanonical( + \\test { + \\ const x = .{}; + \\} + \\ + ); +} + test "zig fmt: anon struct literal 1 element" { try testCanonical( \\test { @@ -527,6 +536,15 @@ test "zig fmt: anon struct literal 3 element comma" { ); } +test "zig fmt: struct literal 0 element" { + try testCanonical( + \\test { + \\ const x = X{}; + \\} + \\ + ); +} + test "zig fmt: struct literal 1 element" { try testCanonical( \\test { @@ -653,6 +671,15 @@ test "zig fmt: anon list literal 3 element comma" { ); } +test "zig fmt: array literal 0 element" { + try testCanonical( + \\test { + \\ const x = [_]u32{}; + \\} + \\ + ); +} + test "zig fmt: array literal 1 element" { try testCanonical( \\test {