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) {