diff --git a/lib/pure/hashes.nim b/lib/pure/hashes.nim index d6a7c7e41d..287b152d2a 100644 --- a/lib/pure/hashes.nim +++ b/lib/pure/hashes.nim @@ -44,6 +44,8 @@ ## * `std/sha1 module `_ for a sha1 encoder and decoder ## * `tables module `_ for hash tables +include "system/inclrtl" + type Hash* = int ## A hash value. Hash tables using these values should ## always have a size of a power of two and can use the ``and`` @@ -172,14 +174,14 @@ proc hash*[T: proc](x: T): Hash {.inline.} = else: result = hash(pointer(x)) -proc hashIdentity*[T: Ordinal](x: T): Hash {.inline.} = +proc hashIdentity*[T: Ordinal](x: T): Hash {.inline, since: (1, 3).} = ## The identity hash. I.e. ``hashIdentity(x) = x``. cast[Hash](ord(x)) when defined(nimIntHash1): proc hash*[T: Ordinal](x: T): Hash {.inline.} = ## Efficient hashing of integers. - hashIdentity(x) + cast[Hash](ord(x)) else: proc hash*[T: Ordinal](x: T): Hash {.inline.} = ## Efficient hashing of integers.