aboutsummaryrefslogtreecommitdiff
path: root/src/value.zig
diff options
context:
space:
mode:
authorVeikka Tuominen <git@vexu.eu>2022-02-24 19:47:42 +0200
committerVeikka Tuominen <git@vexu.eu>2022-02-24 19:48:34 +0200
commitb034c45b2bcb3a28ad260037dfa34c40b6c9313b (patch)
treeef3140c8f3d471791f9adeb7a0befc13808dce57 /src/value.zig
parent6249a24e81b9b3df3d5ca99b57f22470b9ac486c (diff)
downloadzig-b034c45b2bcb3a28ad260037dfa34c40b6c9313b.tar.gz
zig-b034c45b2bcb3a28ad260037dfa34c40b6c9313b.zip
stage2: implement fieldParentPtr
Diffstat (limited to 'src/value.zig')
-rw-r--r--src/value.zig8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/value.zig b/src/value.zig
index 538c20587b..0b3ad15469 100644
--- a/src/value.zig
+++ b/src/value.zig
@@ -1852,7 +1852,13 @@ pub const Value = extern union {
return eql(a_payload.ptr, b_payload.ptr, ptr_ty);
},
.elem_ptr => @panic("TODO: Implement more pointer eql cases"),
- .field_ptr => @panic("TODO: Implement more pointer eql cases"),
+ .field_ptr => {
+ const a_payload = a.castTag(.field_ptr).?.data;
+ const b_payload = b.castTag(.field_ptr).?.data;
+ if (a_payload.field_index != b_payload.field_index) return false;
+
+ return eql(a_payload.container_ptr, b_payload.container_ptr, ty);
+ },
.eu_payload_ptr => @panic("TODO: Implement more pointer eql cases"),
.opt_payload_ptr => @panic("TODO: Implement more pointer eql cases"),
.array => {