diff options
author | Martin Odersky <odersky@gmail.com> | 2006-12-06 14:29:32 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2006-12-06 14:29:32 +0000 |
commit | 7eadbd48c7eea8518fcae0bfce4caed3c1b5142d (patch) | |
tree | 429d3b790feb6f4ecdf01a81ccde17e16ebdb9cb /src/library | |
parent | 7806f3f00f7889170f5ddf84a7c0140b2248a735 (diff) | |
download | scala-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.scala | 29 |
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 |