summaryrefslogtreecommitdiff
path: root/src/library
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2009-09-11 17:08:43 +0000
committerPaul Phillips <paulp@improving.org>2009-09-11 17:08:43 +0000
commitf9394a4d472887c4563e768467170a9b1677d5c1 (patch)
tree801fa248907e6c4b611eb35760b4ad641dfb05a6 /src/library
parent514ff83e3983d81f8bf948abebbe5b9141d9690d (diff)
downloadscala-f9394a4d472887c4563e768467170a9b1677d5c1.tar.gz
scala-f9394a4d472887c4563e768467170a9b1677d5c1.tar.bz2
scala-f9394a4d472887c4563e768467170a9b1677d5c1.zip
Made canEqual abstract in Product and only inse...
Made canEqual abstract in Product and only inserted into case classes if no concrete implementation is inherited. Restored the disabled canEquals usages in collections.
Diffstat (limited to 'src/library')
-rw-r--r--src/library/scala/Product.scala7
-rwxr-xr-xsrc/library/scala/collection/SequenceLike.scala2
-rw-r--r--src/library/scala/collection/generic/MapTemplate.scala2
-rw-r--r--src/library/scala/collection/generic/SetTemplate.scala2
4 files changed, 3 insertions, 10 deletions
diff --git a/src/library/scala/Product.scala b/src/library/scala/Product.scala
index a67fb94167..ce8f733771 100644
--- a/src/library/scala/Product.scala
+++ b/src/library/scala/Product.scala
@@ -50,11 +50,4 @@ trait Product extends Equals {
* toString methods.
*/
def productPrefix = ""
-
- /**
- * An equality helper method to assist in maintaining reflexivity
- * in the face of subtyping. For more, see
- * http://www.artima.com/lejava/articles/equality.html
- */
- override def canEqual(other: Any): Boolean = true
}
diff --git a/src/library/scala/collection/SequenceLike.scala b/src/library/scala/collection/SequenceLike.scala
index bd62590c4c..baa4d47646 100755
--- a/src/library/scala/collection/SequenceLike.scala
+++ b/src/library/scala/collection/SequenceLike.scala
@@ -445,7 +445,7 @@ trait SequenceLike[+A, +Repr] extends IterableLike[A, Repr] { self =>
override def hashCode() = (Sequence.hashSeed /: this)(_ * 41 + _.hashCode)
override def equals(that: Any): Boolean = that match {
- case that: Sequence[_] => /*(that canEqual this)!!! &&*/ (this sameElements that)
+ case that: Sequence[_] => (that canEqual this) && (this sameElements that)
case _ => false
}
diff --git a/src/library/scala/collection/generic/MapTemplate.scala b/src/library/scala/collection/generic/MapTemplate.scala
index 2bd15ee315..cf0fdcbc3d 100644
--- a/src/library/scala/collection/generic/MapTemplate.scala
+++ b/src/library/scala/collection/generic/MapTemplate.scala
@@ -277,7 +277,7 @@ self =>
override def equals(that: Any): Boolean = that match {
case that: Map[b, _] =>
(this eq that) ||
- /*(that canEqual this) && !!!*/
+ (that canEqual this) &&
(this.size == that.size) && {
try {
this forall {
diff --git a/src/library/scala/collection/generic/SetTemplate.scala b/src/library/scala/collection/generic/SetTemplate.scala
index f0e735133b..88061cb4f5 100644
--- a/src/library/scala/collection/generic/SetTemplate.scala
+++ b/src/library/scala/collection/generic/SetTemplate.scala
@@ -176,7 +176,7 @@ self =>
override def equals(that: Any): Boolean = that match {
case that: Set[A] =>
(this eq that) ||
- /*(that canEqual this) &&!!!*/
+ (that canEqual this) &&
(this.size == that.size) &&
(try this subsetOf that.asInstanceOf[Set[A]]
catch { case ex: ClassCastException => false })