summaryrefslogtreecommitdiff
path: root/src/library
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2006-12-06 14:29:32 +0000
committerMartin Odersky <odersky@gmail.com>2006-12-06 14:29:32 +0000
commit7eadbd48c7eea8518fcae0bfce4caed3c1b5142d (patch)
tree429d3b790feb6f4ecdf01a81ccde17e16ebdb9cb /src/library
parent7806f3f00f7889170f5ddf84a7c0140b2248a735 (diff)
downloadscala-7eadbd48c7eea8518fcae0bfce4caed3c1b5142d.tar.gz
scala-7eadbd48c7eea8518fcae0bfce4caed3c1b5142d.tar.bz2
scala-7eadbd48c7eea8518fcae0bfce4caed3c1b5142d.zip
fixed bug 833
Diffstat (limited to 'src/library')
-rw-r--r--src/library/scala/runtime/ScalaRunTime.scala29
1 files changed, 23 insertions, 6 deletions
diff --git a/src/library/scala/runtime/ScalaRunTime.scala b/src/library/scala/runtime/ScalaRunTime.scala
index 1ac8180a5e..ac6a1c28f7 100644
--- a/src/library/scala/runtime/ScalaRunTime.scala
+++ b/src/library/scala/runtime/ScalaRunTime.scala
@@ -93,16 +93,33 @@ object ScalaRunTime {
def _equals(x: Product, y: Any): Boolean = y match {
case y1: Product if x.arity == y1.arity =>
- /*(x.getClass() eq y1.getClass() &&*/ {
- val arity = x.arity;
- var i = 0;
- while (i < arity && x.element(i) == y1.element(i))
- i = i + 1;
- i == arity
+ val arity = x.arity;
+ var i = 0;
+ while (i < arity && x.element(i) == y1.element(i))
+ i = i + 1;
+ i == arity
+ case _ =>
+ false
+ }
+
+ def _equalsWithVarArgs(x: Product, y: Any): Boolean = y match {
+ case y1: Product if x.arity == y1.arity =>
+ val arity = x.arity;
+ var i = 0;
+ while (i < arity - 1 && x.element(i) == y1.element(i))
+ i = i + 1;
+ i == arity - 1 && {
+ x.element(i) match {
+ case xs: Seq[_] =>
+ y1.element(i) match {
+ case ys: Seq[_] => xs sameElements ys
+ }
+ }
}
case _ =>
false
}
+
//def checkDefined[T >: Null](x: T): T =
// if (x == null) throw new UndefinedException else x