diff options
| author | Jacob Young <jacobly0@users.noreply.github.com> | 2023-05-19 21:35:55 -0400 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2023-06-10 20:47:53 -0700 |
| commit | d28fc5bacb2b27ba3f2a5ed17475b9b790be3ed5 (patch) | |
| tree | 84560d77289cec63fa1711414ce53d575069a85e /src/value.zig | |
| parent | 9ff514b6a35b7201f45f8bff31c61b4f8cfa7a7a (diff) | |
| download | zig-d28fc5bacb2b27ba3f2a5ed17475b9b790be3ed5.tar.gz zig-d28fc5bacb2b27ba3f2a5ed17475b9b790be3ed5.zip | |
InternPool: add repeated aggregate storage
Diffstat (limited to 'src/value.zig')
| -rw-r--r-- | src/value.zig | 12 |
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 => {}, }, |
