summaryrefslogtreecommitdiff
path: root/test/files
diff options
context:
space:
mode:
Diffstat (limited to 'test/files')
-rw-r--r--test/files/run/canEqualCaseClasses.scala23
-rw-r--r--test/files/scalap/caseClass/result.test1
-rw-r--r--test/files/scalap/caseObject/result.test1
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