summaryrefslogtreecommitdiff
path: root/src/library/scala/Range.scala
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2009-06-09 15:11:27 +0000
committerPaul Phillips <paulp@improving.org>2009-06-09 15:11:27 +0000
commitf85a6749de6502d4138b4f6013286088c330d74f (patch)
tree02391b6a0ad3e5d96e36166a31b6bd33c29dab29 /src/library/scala/Range.scala
parent5fa3710faaa8c1f5ae0899ec5b88abca3941d0c9 (diff)
downloadscala-f85a6749de6502d4138b4f6013286088c330d74f.tar.gz
scala-f85a6749de6502d4138b4f6013286088c330d74f.tar.bz2
scala-f85a6749de6502d4138b4f6013286088c330d74f.zip
A couple findbugs inspired bugfixes, and a new ...
A couple findbugs inspired bugfixes, and a new trait scala.util.Hashable, now used by GenericRange.
Diffstat (limited to 'src/library/scala/Range.scala')
-rw-r--r--src/library/scala/Range.scala10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/library/scala/Range.scala b/src/library/scala/Range.scala
index 3c8138fb87..d7ee1d7a38 100644
--- a/src/library/scala/Range.scala
+++ b/src/library/scala/Range.scala
@@ -13,6 +13,7 @@ package scala
import collection.immutable.Vector
import collection.generic.VectorView
import util.control.Exception.catching
+import util.Hashable
/** <p>
* <code>GenericRange</code> is a generified version of the
@@ -36,7 +37,7 @@ import util.control.Exception.catching
abstract class GenericRange[T]
(val start: T, val end: T, val step: T, val isInclusive: Boolean = false)
(implicit num: Integral[T])
-extends VectorView[T, Vector[T]] with RangeToString[T] {
+extends VectorView[T, Vector[T]] with RangeToString[T] with Hashable {
import num._
// todo? - we could lift the length restriction by implementing a range as a sequence of
@@ -109,6 +110,13 @@ extends VectorView[T, Vector[T]] with RangeToString[T] {
catching(classOf[ClassCastException]) opt doContains getOrElse super.contains(_x)
}
+
+ // Using trueEnd gives us Range(1, 10, 1).inclusive == Range(1, 11, 1)
+ val hashValues = List(start, trueEnd, step)
+ override def equals(other: Any) = other match {
+ case x: GenericRange[_] => this equalHashValues x
+ case _ => false
+ }
}
private[scala] trait RangeToString[T] extends VectorView[T, Vector[T]] {