diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2021-05-06 17:20:45 -0700 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2021-05-06 17:20:45 -0700 |
| commit | cdea22f5d7f1ef7a44cf871eeafab3383495ab6c (patch) | |
| tree | c71de1d6255bab7673b6f44337429c4417f69423 /src/type.zig | |
| parent | 3791cd6781ce92478b8a17c8d56c5cf66d4ecfb0 (diff) | |
| download | zig-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.zig | 25 |
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 }), } |
