From 95fbce2b958395a367a82ce33170edd93e686173 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Thu, 3 Feb 2022 23:57:05 -0700 Subject: 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. --- src/type.zig | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'src/type.zig') 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; -- cgit v1.2.3