diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2022-02-03 23:57:05 -0700 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2022-02-03 23:59:32 -0700 |
| commit | 95fbce2b958395a367a82ce33170edd93e686173 (patch) | |
| tree | dae1e68036754591c53b71571d5b12b3b2f33539 /src/type.zig | |
| parent | 64f7231f86d4b8a155f48087b3f173d8e41b620c (diff) | |
| download | zig-95fbce2b958395a367a82ce33170edd93e686173.tar.gz zig-95fbce2b958395a367a82ce33170edd93e686173.zip | |
Sema: fixes to fieldVal, resolveStructFully, Type.eql
fieldVal handles pointer to pointer to array. This can happen for
example, if a pointer to an array is used as the condition expression of
a for loop.
resolveStructFully handles tuples (by doing nothing).
fixed Type comparison for tuples to handle comptime fields properly.
Diffstat (limited to 'src/type.zig')
| -rw-r--r-- | src/type.zig | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/type.zig b/src/type.zig index 272d09a921..e3a4b3d60a 100644 --- a/src/type.zig +++ b/src/type.zig @@ -634,7 +634,19 @@ pub const Type = extern union { for (a_payload.data.values) |a_val, i| { const ty = a_payload.data.types[i]; const b_val = b_payload.data.values[i]; - if (!Value.eql(a_val, b_val, ty)) return false; + if (a_val.tag() == .unreachable_value) { + if (b_val.tag() == .unreachable_value) { + continue; + } else { + return false; + } + } else { + if (b_val.tag() == .unreachable_value) { + return false; + } else { + if (!Value.eql(a_val, b_val, ty)) return false; + } + } } return true; |
