diff options
-rw-r--r-- | lib/pure/hashes.nim | 8 | ||||
-rw-r--r-- | tests/collections/thashes.nim | 15 |
2 files changed, 23 insertions, 0 deletions
diff --git a/lib/pure/hashes.nim b/lib/pure/hashes.nim index 17d1c6442..d5759e507 100644 --- a/lib/pure/hashes.nim +++ b/lib/pure/hashes.nim @@ -112,6 +112,14 @@ proc hash*(x: int64): Hash {.inline.} = ## efficient hashing of int64 integers result = toU32(x) +proc hash*(x: uint): Hash {.inline.} = + ## efficient hashing of unsigned integers + result = cast[int](x) + +proc hash*(x: uint64): Hash {.inline.} = + ## efficient hashing of uint64 integers + result = toU32(cast[int](x)) + proc hash*(x: char): Hash {.inline.} = ## efficient hashing of characters result = ord(x) diff --git a/tests/collections/thashes.nim b/tests/collections/thashes.nim index b9c639414..76b99313c 100644 --- a/tests/collections/thashes.nim +++ b/tests/collections/thashes.nim @@ -72,4 +72,19 @@ block: var t = initTable[int, int]() t[0] = 0 +# Check hashability of all integer types (issue #5429) +block: + let intTables = ( + newTable[int, string](), + newTable[int8, string](), + newTable[int16, string](), + newTable[int32, string](), + newTable[int64, string](), + newTable[uint, string](), + newTable[uint8, string](), + newTable[uint16, string](), + newTable[uint32, string](), + newTable[uint64, string](), + ) + echo "true" |