diff options
author | Rex Kerr <ichoran@gmail.com> | 2014-07-20 12:36:25 -0700 |
---|---|---|
committer | Rex Kerr <ichoran@gmail.com> | 2014-07-20 12:39:12 -0700 |
commit | c7cc1a803764b4d26dd23d2baf34a27a3a40f682 (patch) | |
tree | fa9b18d772ca8104ebc42f7e51ac06cb488cae85 /src | |
parent | abdd570cee5788000724c6d3b89a978c48a7fa39 (diff) | |
download | scala-c7cc1a803764b4d26dd23d2baf34a27a3a40f682.tar.gz scala-c7cc1a803764b4d26dd23d2baf34a27a3a40f682.tar.bz2 scala-c7cc1a803764b4d26dd23d2baf34a27a3a40f682.zip |
SI-8738 Regression in range equality
Missed the case of comparing a non-empty range to an empty one. Fixed by checking nonEmpty/isEmpty on other collection.
Added a test to verify the behavior.
Diffstat (limited to 'src')
-rw-r--r-- | src/library/scala/collection/immutable/Range.scala | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/src/library/scala/collection/immutable/Range.scala b/src/library/scala/collection/immutable/Range.scala index 26ccd09803..720dfeed59 100644 --- a/src/library/scala/collection/immutable/Range.scala +++ b/src/library/scala/collection/immutable/Range.scala @@ -364,15 +364,16 @@ extends scala.collection.AbstractSeq[Int] override def equals(other: Any) = other match { case x: Range => // Note: this must succeed for overfull ranges (length > Int.MaxValue) - (x canEqual this) && ( - isEmpty || // all empty sequences are equal - (start == x.start && { // Otherwise, must have same start - val l0 = last - (l0 == x.last && ( // And same end - start == l0 || step == x.step // And either the same step, or not take any steps - )) - }) - ) + (x canEqual this) && { + if (isEmpty) x.isEmpty // empty sequences are equal + else // this is non-empty... + x.nonEmpty && start == x.start && { // ...so other must contain something and have same start + val l0 = last + (l0 == x.last && ( // And same end + start == l0 || step == x.step // And either the same step, or not take any steps + )) + } + } case _ => super.equals(other) } |