Closed
Description
Compiler version
print scalaVersion
3.0.0
Minimized code
https://scastie.scala-lang.org/n7ZE3YEnTqeVxdVHNy8W4g
trait SomeRestriction
enum ADT {
case A extends ADT
case B extends ADT with SomeRestriction
}
object MinimalExample {
val b: ADT & SomeRestriction = ADT.B
b match {
case ADT.B => ???
}
}
Output (click arrow to expand)
It seems like the TypeComparer is running in an infinite recursion loop:
[error] java.lang.StackOverflowError
[error] dotty.tools.dotc.core.TypeComparer.isSubType(TypeComparer.scala:182)
[error] dotty.tools.dotc.core.TypeComparer.isSubType(TypeComparer.scala:190)
[error] dotty.tools.dotc.core.TypeComparer.topLevelSubType(TypeComparer.scala:128)
[error] dotty.tools.dotc.core.TypeComparer$.topLevelSubType(TypeComparer.scala:2603)
[error] dotty.tools.dotc.core.Types$Type.$less$colon$less(Types.scala:1020)
[error] dotty.tools.dotc.core.TypeComparer.provablyDisjoint(TypeComparer.scala:2512)
[error] dotty.tools.dotc.core.TypeComparer.provablyDisjoint(TypeComparer.scala:2524)
[error] dotty.tools.dotc.core.TypeComparer.provablyDisjoint$$anonfun$1(TypeComparer.scala:2447)
[error] scala.collection.immutable.List.forall(List.scala:386)
[error] dotty.tools.dotc.core.TypeComparer.provablyDisjoint(TypeComparer.scala:2447)
[error] dotty.tools.dotc.core.TypeComparer.provablyDisjoint(TypeComparer.scala:2513)
[error] dotty.tools.dotc.core.TypeComparer.provablyDisjoint(TypeComparer.scala:2524)
[error] dotty.tools.dotc.core.TypeComparer.provablyDisjoint$$anonfun$1(TypeComparer.scala:2447)
[error] scala.collection.immutable.List.forall(List.scala:386)
[error] dotty.tools.dotc.core.TypeComparer.provablyDisjoint(TypeComparer.scala:2447)
[error] dotty.tools.dotc.core.TypeComparer.provablyDisjoint(TypeComparer.scala:2513)
[error] dotty.tools.dotc.core.TypeComparer.provablyDisjoint(TypeComparer.scala:2524)
[error] dotty.tools.dotc.core.TypeComparer.provablyDisjoint$$anonfun$1(TypeComparer.scala:2447)
[error] scala.collection.immutable.List.forall(List.scala:386)
[error] dotty.tools.dotc.core.TypeComparer.provablyDisjoint(TypeComparer.scala:2447)
[error] dotty.tools.dotc.core.TypeComparer.provablyDisjoint(TypeComparer.scala:2513)
[error] dotty.tools.dotc.core.TypeComparer.provablyDisjoint(TypeComparer.scala:2524)
[error] dotty.tools.dotc.core.TypeComparer.provablyDisjoint$$anonfun$1(TypeComparer.scala:2447)
...
more lines omitted