authorgravatar for mason@gamesbymason.comMason Remaley <mason@gamesbymason.com> 2026-09-28 00:54:40-07:00
committergravatar for mason@gamesbymason.comMason Remaley <mason@gamesbymason.com> 2026-09-28 00:54:40-07:00
logaa0504ac574cafd3a6ff3cf716bac537fe3689d7
treef71c4250da3cd249591fdbb619065e09f6f4abc7
parent58ce0f3d913dfe0cb91dc151c40128c433f41d98

Remove `Diagnostics.empty`, initialized in callee


1 files changed, 37 insertions(+), 39 deletions(-)

lib/std/zon/parse.zig+37-39
......@@ -27,8 +27,6 @@ const valid_types = {};
2727pub const Diagnostics = struct {
2828 errors: []const Error,
2929
30 pub const empty: Diagnostics = .{ .errors = &.{} };
31
3230 /// Log the failure with `std.log.err`.
3331 pub fn log(self: *const Diagnostics, path: []const u8) void {
3432 std.log.err("{f}", .{self.fmt(path)});
......@@ -39,7 +37,7 @@ pub const Diagnostics = struct {
3937 var arena_allocator: ArenaAllocator = .init(gpa);
4038 defer arena_allocator.deinit();
4139 const arena = arena_allocator.allocator();
42 var diagnostics: Diagnostics = .empty;
40 var diagnostics: Diagnostics = undefined;
4341
4442 const MyType = struct {
4543 foo: u32,
......@@ -71,7 +69,7 @@ pub const Diagnostics = struct {
7169 var arena_allocator: ArenaAllocator = .init(gpa);
7270 defer arena_allocator.deinit();
7371 const arena = arena_allocator.allocator();
74 var diagnostics: Diagnostics = .empty;
72 var diagnostics: Diagnostics = undefined;
7573
7674 const MyType = struct {
7775 foo: u32,
......@@ -198,8 +196,8 @@ pub const Options = struct {
198196 arena: Allocator,
199197 /// The ZON source to parse.
200198 source: [:0]const u8,
201 /// When an error is returned from the parser, a human readable error description of the failure
202 /// is stored here.
199 /// Initialized by the callee with a human readable description of any parse errors that
200 /// occured.
203201 diagnostics: *Diagnostics,
204202 /// If true, unknown fields do not error.
205203 ignore_unknown_fields: bool = false,
......@@ -232,7 +230,7 @@ test fromSlice {
232230 \\}
233231 ;
234232
235 var diagnostics: Diagnostics = .empty;
233 var diagnostics: Diagnostics = undefined;
236234 const options = fromSlice(TextureOptions, .{
237235 .gpa = gpa,
238236 .arena = arena,
......@@ -307,7 +305,7 @@ test updateFromSlice {
307305 .theme = "default",
308306 };
309307
310 var diagnostics: Diagnostics = .empty;
308 var diagnostics: Diagnostics = undefined;
311309 updateFromSlice(MyTextEditorConfig, &config, .{
312310 .gpa = gpa,
313311 .arena = arena,
......@@ -359,7 +357,7 @@ fn fromSliceInner(
359357 options: Options,
360358) error{ OutOfMemory, ParseZon }!void {
361359 var errors: std.ArrayList(Diagnostics.Error) = .empty;
362 defer options.diagnostics.errors = errors.items;
360 defer options.diagnostics.* = .{ .errors = errors.items };
363361
364362 var ast = try std.zig.Ast.parse(options.gpa, options.source, .{ .mode = .zon });
365363 defer ast.deinit(options.gpa);
......@@ -386,8 +384,8 @@ pub const FromZoirOptions = struct {
386384 zoir: *const Zoir,
387385 /// The node to start parsing at.
388386 node: Zoir.Node.Index = .root,
389 /// When an error is returned from the parser, a human readable error description of the failure
390 /// is stored here.
387 /// Initialized by the callee with a human readable description of any parse errors that
388 /// occured.
391389 diagnostics: *Diagnostics,
392390 /// If true, unknown fields do not error.
393391 ignore_unknown_fields: bool = false,
......@@ -432,7 +430,7 @@ fn fromZoirInner(
432430 options: FromZoirOptions,
433431) error{ OutOfMemory, ParseZon }!void {
434432 var errors: std.ArrayList(Diagnostics.Error) = .empty;
435 defer options.diagnostics.errors = errors.items;
433 defer options.diagnostics.* = .{ .errors = errors.items };
436434 return inner(T, value, initialized, .{
437435 .arena = options.arena,
438436 .ast = options.ast,
......@@ -1384,7 +1382,7 @@ test "std.zon ast errors" {
13841382 var arena_allocator: ArenaAllocator = .init(gpa);
13851383 defer arena_allocator.deinit();
13861384 const arena = arena_allocator.allocator();
1387 var diagnostics: Diagnostics = .empty;
1385 var diagnostics: Diagnostics = undefined;
13881386 try std.testing.expectError(
13891387 error.ParseZon,
13901388 fromSliceNoAlloc(struct {}, .{
......@@ -1405,7 +1403,7 @@ test "std.zon comments" {
14051403 var arena_allocator: ArenaAllocator = .init(gpa);
14061404 defer arena_allocator.deinit();
14071405 const arena = arena_allocator.allocator();
1408 var diagnostics: Diagnostics = .empty;
1406 var diagnostics: Diagnostics = undefined;
14091407
14101408 try std.testing.expectEqual(@as(u8, 10), fromSliceNoAlloc(u8, .{
14111409 .gpa = gpa,
......@@ -1441,7 +1439,7 @@ test "std.zon failure/oom formatting" {
14411439 var arena_allocator: ArenaAllocator = .init(gpa);
14421440 defer arena_allocator.deinit();
14431441 const arena = arena_allocator.allocator();
1444 var diagnostics: Diagnostics = .empty;
1442 var diagnostics: Diagnostics = undefined;
14451443
14461444 try std.testing.expectError(error.OutOfMemory, fromSlice([]const u8, .{
14471445 .gpa = .failing,
......@@ -1459,7 +1457,7 @@ test "std.zon fromSlice syntax error" {
14591457 var arena_allocator: ArenaAllocator = .init(gpa);
14601458 defer arena_allocator.deinit();
14611459 const arena = arena_allocator.allocator();
1462 var diagnostics: Diagnostics = .empty;
1460 var diagnostics: Diagnostics = undefined;
14631461 try std.testing.expectError(
14641462 error.ParseZon,
14651463 fromSliceNoAlloc(u8, .{
......@@ -1480,7 +1478,7 @@ test "std.zon optional" {
14801478 var arena_allocator: ArenaAllocator = .init(gpa);
14811479 defer arena_allocator.deinit();
14821480 const arena = arena_allocator.allocator();
1483 var diagnostics: Diagnostics = .empty;
1481 var diagnostics: Diagnostics = undefined;
14841482
14851483 // Basic usage
14861484 {
......@@ -1524,7 +1522,7 @@ test "std.zon unions" {
15241522 var arena_allocator: ArenaAllocator = .init(gpa);
15251523 defer arena_allocator.deinit();
15261524 const arena = arena_allocator.allocator();
1527 var diagnostics: Diagnostics = .empty;
1525 var diagnostics: Diagnostics = undefined;
15281526
15291527 // Unions
15301528 {
......@@ -1722,7 +1720,7 @@ test "std.zon structs" {
17221720 var arena_allocator: ArenaAllocator = .init(gpa);
17231721 defer arena_allocator.deinit();
17241722 const arena = arena_allocator.allocator();
1725 var diagnostics: Diagnostics = .empty;
1723 var diagnostics: Diagnostics = undefined;
17261724
17271725 // Structs (various sizes tested since they're parsed differently)
17281726 {
......@@ -2019,7 +2017,7 @@ test "std.zon tuples" {
20192017 var arena_allocator: ArenaAllocator = .init(gpa);
20202018 defer arena_allocator.deinit();
20212019 const arena = arena_allocator.allocator();
2022 var diagnostics: Diagnostics = .empty;
2020 var diagnostics: Diagnostics = undefined;
20232021
20242022 // Structs (various sizes tested since they're parsed differently)
20252023 {
......@@ -2180,7 +2178,7 @@ test "std.zon arrays and slices" {
21802178 var arena_allocator: ArenaAllocator = .init(gpa);
21812179 defer arena_allocator.deinit();
21822180 const arena = arena_allocator.allocator();
2183 var diagnostics: Diagnostics = .empty;
2181 var diagnostics: Diagnostics = undefined;
21842182
21852183 // Literals
21862184 {
......@@ -2500,7 +2498,7 @@ test "std.zon string literal" {
25002498 var arena_allocator: ArenaAllocator = .init(gpa);
25012499 defer arena_allocator.deinit();
25022500 const arena = arena_allocator.allocator();
2503 var diagnostics: Diagnostics = .empty;
2501 var diagnostics: Diagnostics = undefined;
25042502
25052503 // Basic string literal
25062504 {
......@@ -2792,7 +2790,7 @@ test "std.zon enum literals" {
27922790 var arena_allocator: ArenaAllocator = .init(gpa);
27932791 defer arena_allocator.deinit();
27942792 const arena = arena_allocator.allocator();
2795 var diagnostics: Diagnostics = .empty;
2793 var diagnostics: Diagnostics = undefined;
27962794
27972795 const Enum = enum {
27982796 foo,
......@@ -2906,7 +2904,7 @@ test "std.zon parse bool" {
29062904 var arena_allocator: ArenaAllocator = .init(gpa);
29072905 defer arena_allocator.deinit();
29082906 const arena = arena_allocator.allocator();
2909 var diagnostics: Diagnostics = .empty;
2907 var diagnostics: Diagnostics = undefined;
29102908
29112909 // Correct bools
29122910 try std.testing.expectEqual(true, try fromSliceNoAlloc(bool, .{
......@@ -2981,7 +2979,7 @@ test "std.zon parse int" {
29812979 var arena_allocator: ArenaAllocator = .init(gpa);
29822980 defer arena_allocator.deinit();
29832981 const arena = arena_allocator.allocator();
2984 var diagnostics: Diagnostics = .empty;
2982 var diagnostics: Diagnostics = undefined;
29852983
29862984 // Test various numbers and types
29872985 try std.testing.expectEqual(@as(u8, 10), try fromSliceNoAlloc(u8, .{
......@@ -3429,7 +3427,7 @@ test "std.zon negative char" {
34293427 var arena_allocator: ArenaAllocator = .init(gpa);
34303428 defer arena_allocator.deinit();
34313429 const arena = arena_allocator.allocator();
3432 var diagnostics: Diagnostics = .empty;
3430 var diagnostics: Diagnostics = undefined;
34333431
34343432 {
34353433 try std.testing.expectError(error.ParseZon, fromSliceNoAlloc(f32, .{
......@@ -3464,7 +3462,7 @@ test "std.zon parse float" {
34643462 var arena_allocator: ArenaAllocator = .init(gpa);
34653463 defer arena_allocator.deinit();
34663464 const arena = arena_allocator.allocator();
3467 var diagnostics: Diagnostics = .empty;
3465 var diagnostics: Diagnostics = undefined;
34683466
34693467 // Test decimals
34703468 try std.testing.expectEqual(@as(f16, 0.5), try fromSliceNoAlloc(f16, .{
......@@ -3752,7 +3750,7 @@ test "std.zon free on error" {
37523750 var arena_allocator: ArenaAllocator = .init(gpa);
37533751 defer arena_allocator.deinit();
37543752 const arena = arena_allocator.allocator();
3755 var diagnostics: Diagnostics = .empty;
3753 var diagnostics: Diagnostics = undefined;
37563754
37573755 // Test freeing partially allocated structs
37583756 {
......@@ -3873,7 +3871,7 @@ test "std.zon vector" {
38733871 var arena_allocator: ArenaAllocator = .init(gpa);
38743872 defer arena_allocator.deinit();
38753873 const arena = arena_allocator.allocator();
3876 var diagnostics: Diagnostics = .empty;
3874 var diagnostics: Diagnostics = undefined;
38773875
38783876 // Passing cases
38793877 try std.testing.expectEqual(
......@@ -4062,7 +4060,7 @@ test "std.zon add pointers" {
40624060 var arena_allocator: ArenaAllocator = .init(gpa);
40634061 defer arena_allocator.deinit();
40644062 const arena = arena_allocator.allocator();
4065 var diagnostics: Diagnostics = .empty;
4063 var diagnostics: Diagnostics = undefined;
40664064
40674065 // Primitive with varying levels of pointers
40684066 {
......@@ -4448,7 +4446,7 @@ test "std.zon stop on node" {
44484446 var arena_allocator: ArenaAllocator = .init(gpa);
44494447 defer arena_allocator.deinit();
44504448 const arena = arena_allocator.allocator();
4451 var diagnostics: Diagnostics = .empty;
4449 var diagnostics: Diagnostics = undefined;
44524450
44534451 {
44544452 const Vec2 = struct {
......@@ -4495,7 +4493,7 @@ test "std.zon no alloc" {
44954493 var arena_allocator: ArenaAllocator = .init(gpa);
44964494 defer arena_allocator.deinit();
44974495 const arena = arena_allocator.allocator();
4498 var diagnostics: Diagnostics = .empty;
4496 var diagnostics: Diagnostics = undefined;
44994497
45004498 try std.testing.expectEqual(
45014499 [3]u8{ 1, 2, 3 },
......@@ -4531,7 +4529,7 @@ test "std.zon aligned pointers" {
45314529 var arena_allocator: ArenaAllocator = .init(gpa);
45324530 defer arena_allocator.deinit();
45334531 const arena = arena_allocator.allocator();
4534 var diagnostics: Diagnostics = .empty;
4532 var diagnostics: Diagnostics = undefined;
45354533
45364534 const n: u8 align(8) = 10;
45374535 const Foo = struct {
......@@ -4555,7 +4553,7 @@ test "std.zon update basic" {
45554553 var arena_allocator: ArenaAllocator = .init(gpa);
45564554 defer arena_allocator.deinit();
45574555 const arena = arena_allocator.allocator();
4558 var diagnostics: Diagnostics = .empty;
4556 var diagnostics: Diagnostics = undefined;
45594557
45604558 const Vector = struct { x: f32, y: f32, z: f32 };
45614559 const MyStruct = struct {
......@@ -4668,7 +4666,7 @@ test "std.zon update optionals" {
46684666 var arena_allocator: ArenaAllocator = .init(gpa);
46694667 defer arena_allocator.deinit();
46704668 const arena = arena_allocator.allocator();
4671 var diagnostics: Diagnostics = .empty;
4669 var diagnostics: Diagnostics = undefined;
46724670
46734671 const MyStruct = struct {
46744672 foo: ?struct { bar: u32 = 1, baz: u32 = 2, qux: u32 },
......@@ -4726,7 +4724,7 @@ test "std.zon update optional pointers" {
47264724 var arena_allocator: ArenaAllocator = .init(gpa);
47274725 defer arena_allocator.deinit();
47284726 const arena = arena_allocator.allocator();
4729 var diagnostics: Diagnostics = .empty;
4727 var diagnostics: Diagnostics = undefined;
47304728
47314729 const MyStruct = struct {
47324730 foo: ?*const struct { bar: u32 = 1, baz: u32 = 2, qux: u32 },
......@@ -4752,7 +4750,7 @@ test "std.zon update pointers" {
47524750 var arena_allocator: ArenaAllocator = .init(gpa);
47534751 defer arena_allocator.deinit();
47544752 const arena = arena_allocator.allocator();
4755 var diagnostics: Diagnostics = .empty;
4753 var diagnostics: Diagnostics = undefined;
47564754
47574755 // Updating a pointer should leave fields we don't specify unchanged
47584756 {
......@@ -4795,7 +4793,7 @@ test "std.zon update unions" {
47954793 var arena_allocator: ArenaAllocator = .init(gpa);
47964794 defer arena_allocator.deinit();
47974795 const arena = arena_allocator.allocator();
4798 var diagnostics: Diagnostics = .empty;
4796 var diagnostics: Diagnostics = undefined;
47994797
48004798 const MyUnion = union(enum) {
48014799 none: void,
......@@ -4857,7 +4855,7 @@ test "std.zon variants" {
48574855 var arena_allocator: ArenaAllocator = .init(gpa);
48584856 defer arena_allocator.deinit();
48594857 const arena = arena_allocator.allocator();
4860 var diagnostics: Diagnostics = .empty;
4858 var diagnostics: Diagnostics = undefined;
48614859
48624860 const Struct = struct { a: u32, b: u32 };
48634861 const start: Struct = .{ .a = 10, .b = 20 };