aboutsummaryrefslogtreecommitdiff
path: root/src/check_type.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2025-04-16 10:52:35 +0100
committergingerBill <bill@gingerbill.org>2025-04-16 10:52:35 +0100
commit3dcc22fa6d0779e35e193ba4f5fae6b919d89080 (patch)
treed7e8dd54a2f0981776ca70342137deaeaae4dae9 /src/check_type.cpp
parent990cc56974fcaf6c77043c06ca41b62947a1fb98 (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.cpp15
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) {