Completed
Details
Details
Assignee
Unassigned
UnassignedReporter
Andy Fingerhut
Andy FingerhutApproval
Ok
Patch
Code and Test
Priority
Affects versions
Fix versions
Created January 30, 2014 at 7:44 PM
Updated February 14, 2014 at 4:18 PM
Resolved February 14, 2014 at 4:18 PM
After late Jan 2014 changes to hash functions, PersistentList$EmptyList and (lazy-seq) were left behind:
user=> (= '() (lazy-seq) []) true user=> (map hash ['() (lazy-seq) []]) (1 1 -2017569654) user=> (map class ['() (lazy-seq) []]) (clojure.lang.PersistentList$EmptyList clojure.lang.LazySeq clojure.lang.PersistentVector)
PersistentQueue/EMPTY was updated, so should not need any change.
Solution: Update LazySeq.hasheq() and make EmptyList implement IHashEq. EmptyList now creates a static constant for the hash value of an empty ordered collection and returns the constant for hasheq. An alternative would be to have Murmur3 have this constant instead.
Patch: clj-1335-v2.patch
Depends on: CLJ-1338, CLJ-1339, https://clojure.atlassian.net/browse/CLJ-1331#icft=CLJ-1331 (must be applied first)
Patch: