ScalaEquals icon indicating copy to clipboard operation
ScalaEquals copied to clipboard

equals returns false when class inherits from other class

Open pdorobisz opened this issue 10 years ago • 0 comments

Given following classes:

class A() {}

class B(val x:String) extends A {
   override def equals(other: Any): Boolean = ScalaEquals.equal
   def canEqual(other: Any): Boolean = ScalaEquals.canEquals
}

generated equals method will always return false:

val b1 = new B("A")
val b2 = new B("A")
println(b1 == b2) // false despite the fact that 'x' has same value in both instances

Equals will return true (in this case) when "extends A" is removed from B's declaration.

pdorobisz avatar Apr 24 '14 22:04 pdorobisz