diff options
| author | gingerBill <bill@gingerbill.org> | 2025-04-16 10:52:35 +0100 |
|---|---|---|
| committer | gingerBill <bill@gingerbill.org> | 2025-04-16 10:52:35 +0100 |
| commit | 3dcc22fa6d0779e35e193ba4f5fae6b919d89080 (patch) | |
| tree | d7e8dd54a2f0981776ca70342137deaeaae4dae9 /src/check_type.cpp | |
| parent | 990cc56974fcaf6c77043c06ca41b62947a1fb98 (diff) | |
Change hashing rules for float-like types to make `0 == -0`
Diffstat (limited to 'src/check_type.cpp')
| -rw-r--r-- | src/check_type.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/check_type.cpp b/src/check_type.cpp index 89dcacfc5..1549f477e 100644 --- a/src/check_type.cpp +++ b/src/check_type.cpp @@ -2774,6 +2774,21 @@ gb_internal void add_map_key_type_dependencies(CheckerContext *ctx, Type *key) { return; } + if (key->kind == Type_Basic) { + if (key->Basic.flags & BasicFlag_Quaternion) { + add_package_dependency(ctx, "runtime", "default_hasher_f64"); + add_package_dependency(ctx, "runtime", "default_hasher_quaternion256"); + return; + } else if (key->Basic.flags & BasicFlag_Complex) { + add_package_dependency(ctx, "runtime", "default_hasher_f64"); + add_package_dependency(ctx, "runtime", "default_hasher_complex128"); + return; + } else if (key->Basic.flags & BasicFlag_Float) { + add_package_dependency(ctx, "runtime", "default_hasher_f64"); + return; + } + } + if (key->kind == Type_Struct) { add_package_dependency(ctx, "runtime", "default_hasher"); for_array(i, key->Struct.fields) { |