aboutsummaryrefslogtreecommitdiff
path: root/src/type.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2021-05-06 17:20:45 -0700
committerAndrew Kelley <andrew@ziglang.org>2021-05-06 17:20:45 -0700
commitcdea22f5d7f1ef7a44cf871eeafab3383495ab6c (patch)
treec71de1d6255bab7673b6f44337429c4417f69423 /src/type.zig
parent3791cd6781ce92478b8a17c8d56c5cf66d4ecfb0 (diff)
downloadzig-cdea22f5d7f1ef7a44cf871eeafab3383495ab6c.tar.gz
zig-cdea22f5d7f1ef7a44cf871eeafab3383495ab6c.zip
stage2: wire up outdated/deleted decl detection
we're back to incremental compilation working smoothly
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 }),
}