Skip to content

Commit b28bb06

Browse files
authored
Merge pull request scala/scala#7159 from xuwei-k/Equiv-SAM
use SAM conversion for Equiv instances
2 parents f90c637 + ec536fa commit b28bb06

File tree

1 file changed

+7
-11
lines changed

1 file changed

+7
-11
lines changed

library/src/scala/math/Equiv.scala

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -42,20 +42,16 @@ trait LowPriorityEquiv {
4242
}
4343

4444
object Equiv extends LowPriorityEquiv {
45-
def reference[T <: AnyRef]: Equiv[T] = new Equiv[T] {
46-
def equiv(x: T, y: T) = x eq y
45+
def reference[T <: AnyRef]: Equiv[T] = { _ eq _ }
46+
def universal[T]: Equiv[T] = { _ == _ }
47+
def fromComparator[T](cmp: Comparator[T]): Equiv[T] = {
48+
(x, y) => cmp.compare(x, y) == 0
4749
}
48-
def universal[T]: Equiv[T] = new Equiv[T] {
49-
def equiv(x: T, y: T) = x == y
50-
}
51-
def fromComparator[T](cmp: Comparator[T]): Equiv[T] = new Equiv[T] {
52-
def equiv(x: T, y: T) = cmp.compare(x, y) == 0
53-
}
54-
def fromFunction[T](cmp: (T, T) => Boolean): Equiv[T] = new Equiv[T] {
55-
def equiv(x: T, y: T) = cmp(x, y)
50+
def fromFunction[T](cmp: (T, T) => Boolean): Equiv[T] = {
51+
(x, y) => cmp(x, y)
5652
}
5753
def by[T, S: Equiv](f: T => S): Equiv[T] =
58-
fromFunction((x, y) => implicitly[Equiv[S]].equiv(f(x), f(y)))
54+
((x, y) => implicitly[Equiv[S]].equiv(f(x), f(y)))
5955

6056
@inline def apply[T: Equiv]: Equiv[T] = implicitly[Equiv[T]]
6157
}

0 commit comments

Comments
 (0)