summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--lib/pure/hashes.nim8
-rw-r--r--tests/collections/thashes.nim15
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"