PersistentQueue's hash function does not match its equality

Description

There are two issues:

1) PersistentQueue's hash function doesn't match its equiv function:

(def iq (conj clojure.lang.PersistentQueue/EMPTY (Integer. -1)))
(def lq (conj clojure.lang.PersistentQueue/EMPTY (Long. -1)))
[(= iq lq) (= (hash iq) (hash lq))]
;=> [true false]

2) PersistentQueue's hash function doesn't match PersistentVector's hash:

(def q (conj clojure.lang.PersistentQueue/EMPTY 1 2 3))
[(= [1 2 3] q) (= (hash [1 2 3]) (hash q))]
;=> [true false]

Environment

None

Status

Assignee

Philip Potter

Reporter

Philip Potter

Labels

None

Approval

Ok

Patch

Code and Test

Fix versions

Affects versions

Release 1.4

Priority

Major
Configure