From d1e1277f96551a8a02e70ed81cad62c670ade9b0 Mon Sep 17 00:00:00 2001 From: Travis Brown Date: Tue, 19 Nov 2019 16:24:59 -0600 Subject: [PATCH] Revert "Issue 2891 - Ambiguous Vector instances (#3100)" This reverts commit e76699849727bd3bdf4a64b905f1df1446adf86b. --- .../scala/cats/kernel/instances/ListInstances.scala | 10 ++++------ .../scala/cats/kernel/instances/QueueInstances.scala | 10 ++++------ .../scala/cats/kernel/instances/VectorInstances.scala | 11 ++++------- tests/src/test/scala/cats/tests/ListSuite.scala | 11 ----------- tests/src/test/scala/cats/tests/QueueSuite.scala | 11 ----------- tests/src/test/scala/cats/tests/VectorSuite.scala | 11 ----------- 6 files changed, 12 insertions(+), 52 deletions(-) diff --git a/kernel/src/main/scala/cats/kernel/instances/ListInstances.scala b/kernel/src/main/scala/cats/kernel/instances/ListInstances.scala index 40b705ef70..0e1cf882ce 100644 --- a/kernel/src/main/scala/cats/kernel/instances/ListInstances.scala +++ b/kernel/src/main/scala/cats/kernel/instances/ListInstances.scala @@ -13,16 +13,14 @@ trait ListInstances extends ListInstances1 { } private[instances] trait ListInstances1 extends ListInstances2 { - implicit def catsKernelStdHashForList[A: Hash]: Hash[List[A]] = - new ListHash[A] -} - -private[instances] trait ListInstances2 extends ListInstances3 { implicit def catsKernelStdPartialOrderForList[A: PartialOrder]: PartialOrder[List[A]] = new ListPartialOrder[A] + + implicit def catsKernelStdHashForList[A: Hash]: Hash[List[A]] = + new ListHash[A] } -private[instances] trait ListInstances3 { +private[instances] trait ListInstances2 { implicit def catsKernelStdEqForList[A: Eq]: Eq[List[A]] = new ListEq[A] } diff --git a/kernel/src/main/scala/cats/kernel/instances/QueueInstances.scala b/kernel/src/main/scala/cats/kernel/instances/QueueInstances.scala index 913fb8cf60..76a8ec7e18 100644 --- a/kernel/src/main/scala/cats/kernel/instances/QueueInstances.scala +++ b/kernel/src/main/scala/cats/kernel/instances/QueueInstances.scala @@ -13,16 +13,14 @@ trait QueueInstances extends QueueInstances1 { } private[instances] trait QueueInstances1 extends QueueInstances2 { - implicit def catsKernelStdHashForQueue[A: Hash]: Hash[Queue[A]] = - new QueueHash[A] -} - -private[instances] trait QueueInstances2 extends QueueInstances3 { implicit def catsKernelStdPartialOrderForQueue[A: PartialOrder]: PartialOrder[Queue[A]] = new QueuePartialOrder[A] + + implicit def catsKernelStdHashForQueue[A: Hash]: Hash[Queue[A]] = + new QueueHash[A] } -private[instances] trait QueueInstances3 { +private[instances] trait QueueInstances2 { implicit def catsKernelStdEqForQueue[A: Eq]: Eq[Queue[A]] = new QueueEq[A] } diff --git a/kernel/src/main/scala/cats/kernel/instances/VectorInstances.scala b/kernel/src/main/scala/cats/kernel/instances/VectorInstances.scala index 5acc4a3488..75193a7e64 100644 --- a/kernel/src/main/scala/cats/kernel/instances/VectorInstances.scala +++ b/kernel/src/main/scala/cats/kernel/instances/VectorInstances.scala @@ -6,22 +6,19 @@ import compat.scalaVersionSpecific._ trait VectorInstances extends VectorInstances1 { implicit def catsKernelStdOrderForVector[A: Order]: Order[Vector[A]] = new VectorOrder[A] - implicit def catsKernelStdMonoidForVector[A]: Monoid[Vector[A]] = new VectorMonoid[A] } private[instances] trait VectorInstances1 extends VectorInstances2 { - implicit def catsKernelStdHashForVector[A: Hash]: Hash[Vector[A]] = - new VectorHash[A] -} - -private[instances] trait VectorInstances2 extends VectorInstances3 { implicit def catsKernelStdPartialOrderForVector[A: PartialOrder]: PartialOrder[Vector[A]] = new VectorPartialOrder[A] + + implicit def catsKernelStdHashForVector[A: Hash]: Hash[Vector[A]] = + new VectorHash[A] } -private[instances] trait VectorInstances3 { +private[instances] trait VectorInstances2 { implicit def catsKernelStdEqForVector[A: Eq]: Eq[Vector[A]] = new VectorEq[A] } diff --git a/tests/src/test/scala/cats/tests/ListSuite.scala b/tests/src/test/scala/cats/tests/ListSuite.scala index 9befc591b2..9675fc6c97 100644 --- a/tests/src/test/scala/cats/tests/ListSuite.scala +++ b/tests/src/test/scala/cats/tests/ListSuite.scala @@ -64,17 +64,6 @@ class ListSuite extends CatsSuite { l.show should ===(l.toString) } } - - test("the instance for `Eq[List[A]]` is not ambiguous when A has a Hash and a PartialOrder") { - - import cats.kernel.{Hash, PartialOrder} - - trait A - implicit def po: PartialOrder[A] = ??? - implicit def ho: Hash[A] = ??? - - lazy val _ = implicitly[Eq[List[A]]] - } } final class ListInstancesSuite extends AnyFunSuiteLike { diff --git a/tests/src/test/scala/cats/tests/QueueSuite.scala b/tests/src/test/scala/cats/tests/QueueSuite.scala index ca693536e4..255adc0f6f 100644 --- a/tests/src/test/scala/cats/tests/QueueSuite.scala +++ b/tests/src/test/scala/cats/tests/QueueSuite.scala @@ -35,15 +35,4 @@ class QueueSuite extends CatsSuite { Queue(1, 2, 3).show should ===("Queue(1, 2, 3)") Queue.empty[Int].show should ===("Queue()") } - - test("the instance for `Eq[Queue[A]]` is not ambiguous when A has a Hash and a PartialOrder") { - - import cats.kernel.{Hash, PartialOrder} - - trait A - implicit def po: PartialOrder[A] = ??? - implicit def ho: Hash[A] = ??? - - lazy val _ = implicitly[Eq[Queue[A]]] - } } diff --git a/tests/src/test/scala/cats/tests/VectorSuite.scala b/tests/src/test/scala/cats/tests/VectorSuite.scala index 51289748d7..baa0295bb8 100644 --- a/tests/src/test/scala/cats/tests/VectorSuite.scala +++ b/tests/src/test/scala/cats/tests/VectorSuite.scala @@ -59,17 +59,6 @@ class VectorSuite extends CatsSuite { test("toNev on empty vector returns None") { assert(Vector.empty[Int].toNev == None) } - - test("the instance for `Eq[Vector[A]]` is not ambiguous when A has a Hash and a PartialOrder") { - - import cats.kernel.{Hash, PartialOrder} - - trait A - implicit def po: PartialOrder[A] = ??? - implicit def ho: Hash[A] = ??? - - lazy val _ = implicitly[Eq[Vector[A]]] - } } final class VectorInstancesSuite extends AnyFunSuiteLike {