diff options
| author | Jacob Young <jacobly0@users.noreply.github.com> | 2023-05-29 07:30:30 -0400 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2023-06-10 20:47:56 -0700 |
| commit | 4f70863a55e699c13731325f8c52870119479c02 (patch) | |
| tree | c3e45219ecaf9ae0fd2ffc7316a0063028d65fce /src/value.zig | |
| parent | 32692569656d9a178abb24f8fb7893395700cb62 (diff) | |
| download | zig-4f70863a55e699c13731325f8c52870119479c02.tar.gz zig-4f70863a55e699c13731325f8c52870119479c02.zip | |
InternPool: fix various pointer issues
Diffstat (limited to 'src/value.zig')
| -rw-r--r-- | src/value.zig | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/value.zig b/src/value.zig index 0da5626937..a1f0f68187 100644 --- a/src/value.zig +++ b/src/value.zig @@ -1857,7 +1857,8 @@ pub const Value = struct { .decl => |decl| mod.declPtr(decl).val.elemValue(mod, index), .mut_decl => |mut_decl| (try mod.declPtr(mut_decl.decl).internValue(mod)) .toValue().elemValue(mod, index), - .int, .eu_payload, .opt_payload => unreachable, + .int, .eu_payload => unreachable, + .opt_payload => |base| base.toValue().elemValue(mod, index), .comptime_field => |field_val| field_val.toValue().elemValue(mod, index), .elem => |elem| elem.base.toValue().elemValue(mod, index + elem.index), .field => |field| if (field.base.toValue().pointerDecl(mod)) |decl_index| { @@ -1866,6 +1867,7 @@ pub const Value = struct { return field_val.elemValue(mod, index); } else unreachable, }, + .opt => |opt| opt.val.toValue().elemValue(mod, index), .aggregate => |aggregate| { const len = mod.intern_pool.aggregateTypeLen(aggregate.ty); if (index < len) return switch (aggregate.storage) { |
