From 15f0429b79060cd4d62c04b4888d1634cc5195a3 Mon Sep 17 00:00:00 2001 From: Bondarenko Date: Fri, 13 Sep 2019 17:37:31 +0300 Subject: [PATCH] Hash[Map[K, V]] has unnecessary constraint #3039 --- core/src/main/scala/cats/instances/sortedSet.scala | 6 +++--- .../cats/kernel/instances/SortedSetInstances.scala | 11 +++++++---- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/core/src/main/scala/cats/instances/sortedSet.scala b/core/src/main/scala/cats/instances/sortedSet.scala index 7f55f58fe31..7de93db63bf 100644 --- a/core/src/main/scala/cats/instances/sortedSet.scala +++ b/core/src/main/scala/cats/instances/sortedSet.scala @@ -73,7 +73,7 @@ trait SortedSetInstances extends SortedSetInstances1 { private[instances] trait SortedSetInstances1 { @deprecated("2.0.0-RC2", "Use cats.kernel.instances.sortedSet.catsKernelStdHashForSortedSet") private[instances] def catsKernelStdHashForSortedSet[A: Order: Hash]: Hash[SortedSet[A]] = - cats.kernel.instances.sortedSet.catsKernelStdHashForSortedSet[A] + cats.kernel.instances.sortedSet.catsKernelStdHashForSortedSet1[A] @deprecated("2.0.0-RC2", "Use cats.kernel.instances.sortedSet.catsKernelStdSemilatticeForSortedSet") private[instances] def catsKernelStdSemilatticeForSortedSet[A: Order]: BoundedSemilattice[SortedSet[A]] = @@ -94,7 +94,7 @@ private[instances] trait SortedSetInstancesBinCompat0 { private[instances] trait SortedSetInstancesBinCompat1 extends LowPrioritySortedSetInstancesBinCompat1 { // TODO: Remove when this is no longer necessary for binary compatibility. implicit override def catsKernelStdHashForSortedSet[A: Order: Hash]: Hash[SortedSet[A]] = - cats.kernel.instances.sortedSet.catsKernelStdHashForSortedSet[A] + cats.kernel.instances.sortedSet.catsKernelStdHashForSortedSet1[A] } private[instances] trait LowPrioritySortedSetInstancesBinCompat1 @@ -104,7 +104,7 @@ private[instances] trait LowPrioritySortedSetInstancesBinCompat1 cats.kernel.instances.sortedSet.catsKernelStdOrderForSortedSet[A] override def catsKernelStdHashForSortedSet[A: Order: Hash]: Hash[SortedSet[A]] = - cats.kernel.instances.sortedSet.catsKernelStdHashForSortedSet[A] + cats.kernel.instances.sortedSet.catsKernelStdHashForSortedSet1[A] } @deprecated("2.0.0-RC2", "Use cats.kernel.instances.SortedSetHash") diff --git a/kernel/src/main/scala/cats/kernel/instances/SortedSetInstances.scala b/kernel/src/main/scala/cats/kernel/instances/SortedSetInstances.scala index 618c6610d1b..9d35218180b 100644 --- a/kernel/src/main/scala/cats/kernel/instances/SortedSetInstances.scala +++ b/kernel/src/main/scala/cats/kernel/instances/SortedSetInstances.scala @@ -1,11 +1,14 @@ package cats.kernel package instances -import cats.kernel.{BoundedSemilattice, Hash, Order} import scala.collection.immutable.SortedSet trait SortedSetInstances extends SortedSetInstances1 { - implicit def catsKernelStdHashForSortedSet[A: Order: Hash]: Hash[SortedSet[A]] = + @deprecated("Will be removed after dropping Scala 2.11 support", "") + def catsKernelStdHashForSortedSet[A: Order: Hash]: Hash[SortedSet[A]] = + new SortedSetHash[A] + + implicit def catsKernelStdHashForSortedSet1[A: Hash]: Hash[SortedSet[A]] = new SortedSetHash[A] } @@ -28,7 +31,7 @@ class SortedSetOrder[A: Order] extends Order[SortedSet[A]] { StaticMethods.iteratorEq(s1.iterator, s2.iterator) } -class SortedSetHash[A: Order: Hash] extends Hash[SortedSet[A]] { +class SortedSetHash[A: Hash] extends Hash[SortedSet[A]] { import scala.util.hashing.MurmurHash3._ // adapted from [[scala.util.hashing.MurmurHash3]], @@ -50,7 +53,7 @@ class SortedSetHash[A: Order: Hash] extends Hash[SortedSet[A]] { finalizeHash(h, n) } override def eqv(s1: SortedSet[A], s2: SortedSet[A]): Boolean = - StaticMethods.iteratorEq(s1.iterator, s2.iterator)(Order[A]) + StaticMethods.iteratorEq(s1.iterator, s2.iterator)(Eq[A]) } class SortedSetSemilattice[A: Order] extends BoundedSemilattice[SortedSet[A]] {