From 016b51d608838d39c3e52c5c3a33b1c5be0617e8 Mon Sep 17 00:00:00 2001 From: John Leidegren Date: Thu, 28 Nov 2019 08:50:03 +0100 Subject: [PATCH] Added support for hashing symbols --- __tests__/hash.ts | 2 ++ src/Hash.js | 7 +++++++ 2 files changed, 9 insertions(+) diff --git a/__tests__/hash.ts b/__tests__/hash.ts index 5c2b0ebad1..0408a30111 100644 --- a/__tests__/hash.ts +++ b/__tests__/hash.ts @@ -22,6 +22,8 @@ describe('hash', () => { expect(hash('a')).toBe(97); expect(hash('immutable-js')).toBe(510203252); expect(hash(123)).toBe(123); + expect(hash(Symbol('a-js'))).toBe(97); + expect(hash(Symbol('immutable-js'))).toBe(510203252); }); it('generates different hashes for decimal values', () => { diff --git a/src/Hash.js b/src/Hash.js index f15466ffb9..a6b68bb2e6 100644 --- a/src/Hash.js +++ b/src/Hash.js @@ -22,6 +22,13 @@ export function hash(o) { return o.length > STRING_HASH_CACHE_MIN_STRLEN ? cachedHashString(o) : hashString(o); + case 'symbol': { + const desc = o.description; + return typeof desc === 'string' && + desc.length > STRING_HASH_CACHE_MIN_STRLEN + ? cachedHashString(desc) + : hashString(desc); + } case 'object': case 'function': if (o === null) {