From ab52406e0c5598b651b11f3f7f93ad5ddb875896 Mon Sep 17 00:00:00 2001 From: Mason Remaley Date: Mon, 20 Jul 2026 22:29:10 -0700 Subject: [PATCH] Fix optional initialization --- lib/std/zon/parse.zig | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/std/zon/parse.zig b/lib/std/zon/parse.zig index 3d6af24e713ee3254824beee03a03914be57c539..eec6034d193183405327ebb3d9e886618c90eb41 100644 --- a/lib/std/zon/parse.zig +++ b/lib/std/zon/parse.zig @@ -459,10 +459,12 @@ const Parser = struct { switch (@typeInfo(@TypeOf(out.*))) { .optional => |optional| if (node.get(self.zoir) == .null) { out.* = null; + } else if (initialized and out.* != null) { + try self.parseExprInnerInto(node, &out.*.?, true); } else { - const child_initialized = initialized and out.* != null; - if (!child_initialized) out.* = @as(optional.child, undefined); - try self.parseExprInnerInto(node, &out.*.?, child_initialized); + var some: optional.child = undefined; + try self.parseExprInnerInto(node, &some, false); + out.* = some; }, .bool => out.* = try self.parseBool(node), .int => out.* = try self.parseInt(@TypeOf(out.*), node), -- 2.54.0