diff options
author | David MacIver <david.maciver@gmail.com> | 2009-03-26 20:08:56 +0000 |
---|---|---|
committer | David MacIver <david.maciver@gmail.com> | 2009-03-26 20:08:56 +0000 |
commit | 06e3400b2cd813ff3dd5778e18ce1d17bc0a50d2 (patch) | |
tree | a3037912af86d4f2f80cddd1ffe6d5547ec38b34 | |
parent | bf96e45cd12d71140d27b8c4901c279a2ce4e5fc (diff) | |
download | scala-06e3400b2cd813ff3dd5778e18ce1d17bc0a50d2.tar.gz scala-06e3400b2cd813ff3dd5778e18ce1d17bc0a50d2.tar.bz2 scala-06e3400b2cd813ff3dd5778e18ce1d17bc0a50d2.zip |
Correcting equality behaviour on IntMap.empty a...
Correcting equality behaviour on IntMap.empty and LongMap.empty
-rw-r--r-- | src/library/scala/collection/immutable/IntMap.scala | 7 | ||||
-rw-r--r-- | src/library/scala/collection/immutable/LongMap.scala | 7 | ||||
-rw-r--r-- | test/files/run/t1829.check | 0 | ||||
-rw-r--r-- | test/files/run/t1829.scala | 12 |
4 files changed, 24 insertions, 2 deletions
diff --git a/src/library/scala/collection/immutable/IntMap.scala b/src/library/scala/collection/immutable/IntMap.scala index 2e05c6873d..c05f7ec1a8 100644 --- a/src/library/scala/collection/immutable/IntMap.scala +++ b/src/library/scala/collection/immutable/IntMap.scala @@ -46,8 +46,13 @@ object IntMap{ private[immutable] case object Nil extends IntMap[Nothing]{ - override def equals(that : Any) = this eq that.asInstanceOf[AnyRef] + override def equals(that : Any) = that match { + case (that : AnyRef) if (this eq that) => true; + case (that : IntMap[_]) => false; // The only empty IntMaps are eq Nil + case that => super.equals(that); + } }; + private[immutable] case class Tip[+T](key : Int, value : T) extends IntMap[T]{ def withValue[S](s : S) = if (s.asInstanceOf[AnyRef] eq value.asInstanceOf[AnyRef]) this.asInstanceOf[IntMap.Tip[S]]; diff --git a/src/library/scala/collection/immutable/LongMap.scala b/src/library/scala/collection/immutable/LongMap.scala index e0afdf0ad6..298d7c4e82 100644 --- a/src/library/scala/collection/immutable/LongMap.scala +++ b/src/library/scala/collection/immutable/LongMap.scala @@ -47,8 +47,13 @@ object LongMap{ private[immutable] case object Nil extends LongMap[Nothing]{ - override def equals(that : Any) = this eq that.asInstanceOf[AnyRef] + override def equals(that : Any) = that match { + case (that : AnyRef) if (this eq that) => true; + case (that : LongMap[_]) => false; // The only empty LongMaps are eq Nil + case that => super.equals(that); + } }; + private[immutable] case class Tip[+T](key : Long, value : T) extends LongMap[T]{ def withValue[S](s : S) = if (s.asInstanceOf[AnyRef] eq value.asInstanceOf[AnyRef]) this.asInstanceOf[LongMap.Tip[S]]; diff --git a/test/files/run/t1829.check b/test/files/run/t1829.check new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/test/files/run/t1829.check diff --git a/test/files/run/t1829.scala b/test/files/run/t1829.scala new file mode 100644 index 0000000000..8240527424 --- /dev/null +++ b/test/files/run/t1829.scala @@ -0,0 +1,12 @@ +object Test{ + def main(args : Array[String]){ + import scala.collection.immutable._ + assert(IntMap.empty == HashMap.empty); + assert(HashMap.empty == IntMap.empty); + assert(LongMap.empty == HashMap.empty); + assert(HashMap.empty == LongMap.empty); + assert(IntMap.empty == LongMap.empty); + assert(IntMap(1 -> 2) == HashMap(1 -> 2)); + assert(LongMap(1L -> 2) == HashMap(1L -> 2)); + } +} |