diff options
Diffstat (limited to 'src/value.zig')
| -rw-r--r-- | src/value.zig | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/value.zig b/src/value.zig index 704e667ac0..264525a204 100644 --- a/src/value.zig +++ b/src/value.zig @@ -1365,12 +1365,20 @@ pub const Value = extern union { const b_field_index = b.castTag(.enum_field_index).?.data; return a_field_index == b_field_index; }, + .opt_payload => { + const a_payload = a.castTag(.opt_payload).?.data; + const b_payload = b.castTag(.opt_payload).?.data; + var buffer: Type.Payload.ElemType = undefined; + return eql(a_payload, b_payload, ty.optionalChild(&buffer)); + }, .elem_ptr => @panic("TODO: Implement more pointer eql cases"), .field_ptr => @panic("TODO: Implement more pointer eql cases"), .eu_payload_ptr => @panic("TODO: Implement more pointer eql cases"), .opt_payload_ptr => @panic("TODO: Implement more pointer eql cases"), else => {}, } + } else if (a_tag == .null_value or b_tag == .null_value) { + return false; } if (a.pointerDecl()) |a_decl| { |
