Closed
Description
scala> case class C(x: Int)
// defined case class C
scala> class CC(x: Int) extends C(x) { override def canEqual(o: Any) = o.isInstanceOf[CC] }
// defined class CC
scala> C(1) == new CC(1)
val res0: Boolean = true
In Scala 2 the result is false
.
The generated equals
in Scala 3:
override def equals(x$0: Any): Boolean =
this.eq(x$0.$asInstanceOf$[Object]).||(
x$0 match
{
case x$0 @ _:C @unchecked => this.x.==(x$0.x)
case _ => false
}
)
while in Scala 2
override <synthetic> def equals(x$1: Any): Boolean = C.this.eq(x$1.asInstanceOf[Object]).||(x$1 match {
case (_: C) => true
case _ => false
}.&&({
<synthetic> val C$1: C = x$1.asInstanceOf[C];
C.this.x.==(C$1.x).&&(C$1.canEqual(C.this))
}))