diff options
author | Lukas Rytz <lukas.rytz@gmail.com> | 2016-12-20 13:32:02 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-12-20 13:32:02 +0100 |
commit | 246653f024c13ba0348fec3f83b147de11251fe3 (patch) | |
tree | 22f1a21ae2548f859817952421c0d25f98fa6ad8 /src/library | |
parent | 0924e7318046ea27a69c5f9d1675c9981f7ebeae (diff) | |
parent | 079e8dc61704a768792c6b210a5b0cd25522ee55 (diff) | |
download | scala-246653f024c13ba0348fec3f83b147de11251fe3.tar.gz scala-246653f024c13ba0348fec3f83b147de11251fe3.tar.bz2 scala-246653f024c13ba0348fec3f83b147de11251fe3.zip |
Merge pull request #5608 from retronym/merge/2.11.x-to-2.12.x-20161220
Merge 2.11.x to 2.12.x [ci: last-only]
Diffstat (limited to 'src/library')
-rw-r--r-- | src/library/scala/collection/immutable/NumericRange.scala | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/library/scala/collection/immutable/NumericRange.scala b/src/library/scala/collection/immutable/NumericRange.scala index ef3fa99971..f1b831bf75 100644 --- a/src/library/scala/collection/immutable/NumericRange.scala +++ b/src/library/scala/collection/immutable/NumericRange.scala @@ -114,13 +114,18 @@ extends AbstractSeq[T] with IndexedSeq[T] with Serializable { import NumericRange.defaultOrdering override def min[T1 >: T](implicit ord: Ordering[T1]): T = - if (ord eq defaultOrdering(num)) { + // We can take the fast path: + // - If the Integral of this NumericRange is also the requested Ordering + // (Integral <: Ordering). This can happen for custom Integral types. + // - The Ordering is the default Ordering of a well-known Integral type. + if ((ord eq num) || defaultOrdering.get(num).exists(ord eq _)) { if (num.signum(step) > 0) head else last } else super.min(ord) override def max[T1 >: T](implicit ord: Ordering[T1]): T = - if (ord eq defaultOrdering(num)) { + // See comment for fast path in min(). + if ((ord eq num) || defaultOrdering.get(num).exists(ord eq _)) { if (num.signum(step) > 0) last else head } else super.max(ord) |