scala/scala3

Documentation help needed: `given [T]: CanEqual[T, T]` resolves `CanEqual`s of different types

Open

#18.631 geöffnet am 2. Okt. 2023

Auf GitHub ansehen
 (10 Kommentare) (0 Reaktionen) (0 zugewiesene Personen)Scala (1.159 Forks)batch import
area:documentationgood first issueitype:enhancement

Repository-Metriken

Stars
 (6.247 Stars)
PR-Merge-Metriken
 (Durchschn. Merge 18T 14h) (133 gemergte PRs in 30 T)

Beschreibung

Compiler version: 3.3.1 Compiler option: -language:strictEquality

The following code compiles fine. But why? Where does it finds CanEqual[Test, Test2] of different types?

case class Test(i: Int)
case class Test2(i: Int)

object Eq:
  given [T]: CanEqual[T, T] = CanEqual.derived

  @main def run(): Unit =
    Test(1) == Test2(2)
    ()

https://scastie.scala-lang.org/X6boEpObQXee5uhESbviuQ

Thanks

Contributor Guide