summaryrefslogtreecommitdiff
path: root/src/library
diff options
context:
space:
mode:
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