diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/files/run/canEqualCaseClasses.scala | 23 | ||||
-rw-r--r-- | test/files/scalap/caseClass/result.test | 1 | ||||
-rw-r--r-- | test/files/scalap/caseObject/result.test | 1 |
3 files changed, 25 insertions, 0 deletions
diff --git a/test/files/run/canEqualCaseClasses.scala b/test/files/run/canEqualCaseClasses.scala new file mode 100644 index 0000000000..b1c3eb91de --- /dev/null +++ b/test/files/run/canEqualCaseClasses.scala @@ -0,0 +1,23 @@ +object Test { + case class Foo(x: Int) + case class Bar(y: Int) extends Foo(y) + case class Nutty() { + override def canEqual(other: Any) = true + } + + def assertEqual(x: AnyRef, y: AnyRef) = + assert((x == y) && (y == x) && (x.hashCode == y.hashCode)) + + def assertUnequal(x: AnyRef, y: AnyRef) = + assert((x != y) && (y != x)) + + def main(args: Array[String]): Unit = { + assertEqual(Foo(5), Foo(5)) + assertEqual(Bar(5), Bar(5)) + assertUnequal(Foo(5), Bar(5)) + + // in case there's an overriding implementation + assert(Nutty() canEqual (new AnyRef)) + assert(!(Foo(5) canEqual (new AnyRef))) + } +} diff --git a/test/files/scalap/caseClass/result.test b/test/files/scalap/caseClass/result.test index 3daa036d18..be64349cb1 100644 --- a/test/files/scalap/caseClass/result.test +++ b/test/files/scalap/caseClass/result.test @@ -11,4 +11,5 @@ case class CaseClass[A >: scala.Nothing <: scala.Seq[scala.Int]] extends java.la override def productPrefix : java.lang.String = { /* compiled code */ } override def productArity : scala.Int = { /* compiled code */ } override def productElement(x$1 : scala.Int) : scala.Any = { /* compiled code */ } + override def canEqual(x$1 : scala.Any) : scala.Boolean = { /* compiled code */ } }
\ No newline at end of file diff --git a/test/files/scalap/caseObject/result.test b/test/files/scalap/caseObject/result.test index 2097c5a71d..f81e6ce3cb 100644 --- a/test/files/scalap/caseObject/result.test +++ b/test/files/scalap/caseObject/result.test @@ -4,5 +4,6 @@ case object CaseObject extends java.lang.Object with scala.ScalaObject with scal override def productPrefix : java.lang.String = { /* compiled code */ } override def productArity : scala.Int = { /* compiled code */ } override def productElement(x$1 : scala.Int) : scala.Any = { /* compiled code */ } + override def canEqual(x$1 : scala.Any) : scala.Boolean = { /* compiled code */ } protected def readResolve() : java.lang.Object = { /* compiled code */ } }
\ No newline at end of file |