Skip to content

case value class canEqual is inconsistent #13034

Open
@lrytz

Description

@lrytz
scala> case class VCC(x: Int) extends AnyVal
class VCC

scala> val v = VCC(1)
val v: VCC = VCC(1)

scala> v.canEqual(v)
val res0: Boolean = false

scala> v.canEqual(1)
val res1: Boolean = true

scala> v == v
val res2: Boolean = true

Fortunately, equals doesn't invoke canEqual because the class is final (it's a value class) https://github.com/scala/scala/blob/v2.13.14/src/compiler/scala/tools/nsc/typechecker/SyntheticMethods.scala#L200.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions