summaryrefslogtreecommitdiff
path: root/test/files/run/canEqualCaseClasses.scala
diff options
context:
space:
mode:
Diffstat (limited to 'test/files/run/canEqualCaseClasses.scala')
-rw-r--r--test/files/run/canEqualCaseClasses.scala23
1 files changed, 23 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)))
+ }
+}