scala / bug

Scala 2 bug reports only. Please, no questions — proper bug reports only.
https://scala-lang.org
232 stars 21 forks source link

`T =:= RefinedType(List(T, AnyRef), Nil)` is false #12968

Open lrytz opened 6 months ago

lrytz commented 6 months ago

In 2.13.13:

scala> :power
scala> trait T

scala> val t = typeOf[T]
scala> val tr = RefinedType(List(t, typeOf[AnyRef]), EmptyScope)

scala> t =:= tr
val res0: Boolean = false

scala> t <:< tr
val res1: Boolean = true

scala> tr <:< t
val res2: Boolean = true

This leads to

scala> trait X { def f: Int }; trait T { def f: X }; class C extends T { def f = new X { def f = 1 } }
                                                                             ^
       error: under -Xsource:3-cross, the inferred type changes to X [quickfixable]

The inferred type for f is RefinedType(List(X, AnyRef), Nil).