diff options
Diffstat (limited to 'src/value.zig')
| -rw-r--r-- | src/value.zig | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/src/value.zig b/src/value.zig index 51f678aaaa..a740a35b79 100644 --- a/src/value.zig +++ b/src/value.zig @@ -2040,9 +2040,19 @@ pub const Value = extern union { } const fields = ty.structFields().values(); if (fields.len == 0) return; - const field_values = val.castTag(.@"struct").?.data; - for (field_values) |field_val, i| { - field_val.hash(fields[i].ty, hasher); + switch (val.tag()) { + .empty_struct_value => { + for (fields) |field| { + field.default_val.hash(field.ty, hasher); + } + }, + .@"struct" => { + const field_values = val.castTag(.@"struct").?.data; + for (field_values) |field_val, i| { + field_val.hash(fields[i].ty, hasher); + } + }, + else => unreachable, } }, .Optional => { |
