aboutsummaryrefslogtreecommitdiff
path: root/src/type.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/type.zig')
-rw-r--r--src/type.zig25
1 files changed, 22 insertions, 3 deletions
diff --git a/src/type.zig b/src/type.zig
index cfae0b811d..bf4b3f7b64 100644
--- a/src/type.zig
+++ b/src/type.zig
@@ -485,14 +485,33 @@ pub const Type = extern union {
var buf_b: Payload.ElemType = undefined;
return a.optionalChild(&buf_a).eql(b.optionalChild(&buf_b));
},
+ .Struct => {
+ if (a.castTag(.@"struct")) |a_payload| {
+ if (b.castTag(.@"struct")) |b_payload| {
+ return a_payload.data == b_payload.data;
+ }
+ }
+ return a.tag() == b.tag();
+ },
+ .Enum => {
+ if (a.cast(Payload.EnumFull)) |a_payload| {
+ if (b.cast(Payload.EnumFull)) |b_payload| {
+ return a_payload.data == b_payload.data;
+ }
+ }
+ if (a.cast(Payload.EnumSimple)) |a_payload| {
+ if (b.cast(Payload.EnumSimple)) |b_payload| {
+ return a_payload.data == b_payload.data;
+ }
+ }
+ return a.tag() == b.tag();
+ },
+ .Opaque,
.Float,
- .Struct,
.ErrorUnion,
.ErrorSet,
- .Enum,
.Union,
.BoundFn,
- .Opaque,
.Frame,
=> std.debug.panic("TODO implement Type equality comparison of {} and {}", .{ a, b }),
}