aboutsummaryrefslogtreecommitdiff
path: root/src/Value.zig
diff options
context:
space:
mode:
authorMatthew Lugg <mlugg@mlugg.co.uk>2025-11-23 07:50:29 +0000
committerGitHub <noreply@github.com>2025-11-23 07:50:29 +0000
commit6d543bcf94b2deefa918cb29de93fc32a10d4abf (patch)
treed6d90938858a7479b682a3b97c98cb3ab67cd4df /src/Value.zig
parent0a9f666ea62829607d782dc0cac5d10099def180 (diff)
parentdec1163fbb892f276179ae74b51007c656157d99 (diff)
downloadzig-6d543bcf94b2deefa918cb29de93fc32a10d4abf.tar.gz
zig-6d543bcf94b2deefa918cb29de93fc32a10d4abf.zip
Merge pull request #23733 from alichraghi/bp
replace @Type with individual type-creating builtins
Diffstat (limited to 'src/Value.zig')
-rw-r--r--src/Value.zig23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/Value.zig b/src/Value.zig
index 9ced6f1074..930f94a5a3 100644
--- a/src/Value.zig
+++ b/src/Value.zig
@@ -2824,6 +2824,29 @@ pub fn resolveLazy(
.val = resolved_val,
}));
},
+ .error_union => |eu| switch (eu.val) {
+ .err_name => return val,
+ .payload => |payload| {
+ const resolved_payload = try Value.fromInterned(payload).resolveLazy(arena, pt);
+ if (resolved_payload.toIntern() == payload) return val;
+ return .fromInterned(try pt.intern(.{ .error_union = .{
+ .ty = eu.ty,
+ .val = .{ .payload = resolved_payload.toIntern() },
+ } }));
+ },
+ },
+ .opt => |opt| switch (opt.val) {
+ .none => return val,
+ else => |payload| {
+ const resolved_payload = try Value.fromInterned(payload).resolveLazy(arena, pt);
+ if (resolved_payload.toIntern() == payload) return val;
+ return .fromInterned(try pt.intern(.{ .opt = .{
+ .ty = opt.ty,
+ .val = resolved_payload.toIntern(),
+ } }));
+ },
+ },
+
else => return val,
}
}