From d28fc5bacb2b27ba3f2a5ed17475b9b790be3ed5 Mon Sep 17 00:00:00 2001 From: Jacob Young Date: Fri, 19 May 2023 21:35:55 -0400 Subject: InternPool: add repeated aggregate storage --- src/value.zig | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'src/value.zig') 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 => {}, }, -- cgit v1.2.3