aboutsummaryrefslogtreecommitdiff
path: root/src/value.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/value.zig')
-rw-r--r--src/value.zig16
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 => {