diff options
author | Paul Phillips <paulp@improving.org> | 2009-09-11 17:08:43 +0000 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2009-09-11 17:08:43 +0000 |
commit | f9394a4d472887c4563e768467170a9b1677d5c1 (patch) | |
tree | 801fa248907e6c4b611eb35760b4ad641dfb05a6 /src/library | |
parent | 514ff83e3983d81f8bf948abebbe5b9141d9690d (diff) | |
download | scala-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.scala | 7 | ||||
-rwxr-xr-x | src/library/scala/collection/SequenceLike.scala | 2 | ||||
-rw-r--r-- | src/library/scala/collection/generic/MapTemplate.scala | 2 | ||||
-rw-r--r-- | src/library/scala/collection/generic/SetTemplate.scala | 2 |
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 }) |