diff options
Diffstat (limited to 'lib/std/array_hash_map.zig')
| -rw-r--r-- | lib/std/array_hash_map.zig | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/lib/std/array_hash_map.zig b/lib/std/array_hash_map.zig index d296cdcc01..831b21fe19 100644 --- a/lib/std/array_hash_map.zig +++ b/lib/std/array_hash_map.zig @@ -18,11 +18,11 @@ const builtin = std.builtin; const hash_map = @This(); pub fn AutoArrayHashMap(comptime K: type, comptime V: type) type { - return ArrayHashMap(K, V, getAutoHashFn(K), getAutoEqlFn(K), autoEqlIsCheap(K)); + return ArrayHashMap(K, V, getAutoHashFn(K), getAutoEqlFn(K), !autoEqlIsCheap(K)); } pub fn AutoArrayHashMapUnmanaged(comptime K: type, comptime V: type) type { - return ArrayHashMapUnmanaged(K, V, getAutoHashFn(K), getAutoEqlFn(K), autoEqlIsCheap(K)); + return ArrayHashMapUnmanaged(K, V, getAutoHashFn(K), getAutoEqlFn(K), !autoEqlIsCheap(K)); } /// Builtin hashmap for strings as keys. @@ -1318,7 +1318,7 @@ test "reIndex" { try al.append(std.testing.allocator, .{ .key = i, .value = i * 10, - .hash = hash(i), + .hash = {}, }); } @@ -1345,7 +1345,7 @@ test "fromOwnedArrayList" { try al.append(std.testing.allocator, .{ .key = i, .value = i * 10, - .hash = hash(i), + .hash = {}, }); } @@ -1362,6 +1362,18 @@ test "fromOwnedArrayList" { } } +test "auto store_hash" { + const HasCheapEql = AutoArrayHashMap(i32, i32); + const HasExpensiveEql = AutoArrayHashMap([32]i32, i32); + try testing.expect(meta.fieldInfo(HasCheapEql.Entry, .hash).field_type == void); + try testing.expect(meta.fieldInfo(HasExpensiveEql.Entry, .hash).field_type != void); + + const HasCheapEqlUn = AutoArrayHashMapUnmanaged(i32, i32); + const HasExpensiveEqlUn = AutoArrayHashMapUnmanaged([32]i32, i32); + try testing.expect(meta.fieldInfo(HasCheapEqlUn.Entry, .hash).field_type == void); + try testing.expect(meta.fieldInfo(HasExpensiveEqlUn.Entry, .hash).field_type != void); +} + pub fn getHashPtrAddrFn(comptime K: type) (fn (K) u32) { return struct { fn hash(key: K) u32 { |
