aboutsummaryrefslogtreecommitdiff
path: root/src/value.zig
diff options
context:
space:
mode:
authorJacob Young <jacobly0@users.noreply.github.com>2023-05-19 21:35:55 -0400
committerAndrew Kelley <andrew@ziglang.org>2023-06-10 20:47:53 -0700
commitd28fc5bacb2b27ba3f2a5ed17475b9b790be3ed5 (patch)
tree84560d77289cec63fa1711414ce53d575069a85e /src/value.zig
parent9ff514b6a35b7201f45f8bff31c61b4f8cfa7a7a (diff)
downloadzig-d28fc5bacb2b27ba3f2a5ed17475b9b790be3ed5.tar.gz
zig-d28fc5bacb2b27ba3f2a5ed17475b9b790be3ed5.zip
InternPool: add repeated aggregate storage
Diffstat (limited to 'src/value.zig')
-rw-r--r--src/value.zig12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/value.zig b/src/value.zig
index 4408d10231..db79fa3fe6 100644
--- a/src/value.zig
+++ b/src/value.zig
@@ -2665,7 +2665,10 @@ pub const Value = struct {
else => unreachable,
},
else => return switch (mod.intern_pool.indexToKey(val.ip_index)) {
- .aggregate => |aggregate| aggregate.fields[index].toValue(),
+ .aggregate => |aggregate| switch (aggregate.storage) {
+ .elems => |elems| elems[index],
+ .repeated_elem => |elem| elem,
+ }.toValue(),
else => unreachable,
},
}
@@ -2753,8 +2756,11 @@ pub const Value = struct {
else => switch (mod.intern_pool.indexToKey(val.ip_index)) {
.undef => return true,
.simple_value => |v| if (v == .undefined) return true,
- .aggregate => |aggregate| for (aggregate.fields) |field| {
- if (try anyUndef(field.toValue(), mod)) return true;
+ .aggregate => |aggregate| switch (aggregate.storage) {
+ .elems => |elems| for (elems) |elem| {
+ if (try anyUndef(elem.toValue(), mod)) return true;
+ },
+ .repeated_elem => |elem| if (try anyUndef(elem.toValue(), mod)) return true,
},
else => {},
},