Open
Description
Reproduction steps
In Scala 2.13.8
type Type[T] = T { type X = Type[T] }
Another case:
trait Contra[-F] {
def method() :Unit = {
type Refine = F { type Self <: Refine }
}
}
Problem
Compiler's output:
java.lang.StackOverflowError
at scala.reflect.internal.Symbols$Symbol.variance(Symbols.scala:1160)
at scala.reflect.internal.Variances$VarianceValidator$ValidateVarianceMap$.apply(Variances.scala:126)
at scala.reflect.internal.Types$TypeBounds.$anonfun$mapOver$1(Types.scala:1575)
at scala.reflect.internal.Types$TypeBounds.mapOver(Types.scala:1575)
at scala.reflect.internal.Variances$VarianceValidator$ValidateVarianceMap$.apply(Variances.scala:130)
at scala.reflect.internal.Variances$VarianceValidator$ValidateVarianceMap$.$anonfun$mapOver$2(Variances.scala:106)
at scala.reflect.internal.Variances$VarianceValidator$ValidateVarianceMap$.$anonfun$mapOver$1(Variances.scala:106)
at scala.reflect.internal.Scopes$Scope.foreach(Scopes.scala:455)
at scala.reflect.internal.Variances$VarianceValidator$ValidateVarianceMap$.mapOver(Variances.scala:106)
at scala.reflect.internal.Types$RefinedType.mapOver(Types.scala:1863)
at scala.reflect.internal.Variances$VarianceValidator$ValidateVarianceMap$.apply(Variances.scala:127)
at scala.reflect.internal.Variances$VarianceValidator$ValidateVarianceMap$.apply(Variances.scala:125)
at scala.reflect.internal.Types$TypeBounds.mapOver(Types.scala:1578)
at scala.reflect.internal.Variances$VarianceValidator$ValidateVarianceMap$.apply(Variances.scala:130)
at scala.reflect.internal.Variances$VarianceValidator$ValidateVarianceMap$.$anonfun$mapOver$2(Variances.scala:106)
at scala.reflect.internal.Variances$VarianceValidator$ValidateVarianceMap$.$anonfun$mapOver$1(Variances.scala:106)
at scala.reflect.internal.Scopes$Scope.foreach(Scopes.scala:455)
at scala.reflect.internal.Variances$VarianceValidator$ValidateVarianceMap$.mapOver(Variances.scala:106)
at scala.reflect.internal.Types$RefinedType.mapOver(Types.scala:1863)
at scala.reflect.internal.Variances$VarianceValidator$ValidateVarianceMap$.apply(Variances.scala:127)
at scala.reflect.internal.Variances$VarianceValidator$ValidateVarianceMap$.apply(Variances.scala:125)
at scala.reflect.internal.Types$TypeBounds.mapOver(Types.scala:1578)
at scala.reflect.internal.Variances$VarianceValidator$ValidateVarianceMap$.apply(Variances.scala:130)
at scala.reflect.internal.Variances$VarianceValidator$ValidateVarianceMap$.$anonfun$mapOver$2(Variances.scala:106)
at scala.reflect.internal.Variances$VarianceValidator$ValidateVarianceMap$.$anonfun$mapOver$1(Variances.scala:106)
at scala.reflect.internal.Scopes$Scope.foreach(Scopes.scala:455)
at scala.reflect.internal.Variances$VarianceValidator$ValidateVarianceMap$.mapOver(Variances.scala:106)
at scala.reflect.internal.Types$RefinedType.mapOver(Types.scala:1863)
at scala.reflect.internal.Variances$VarianceValidator$ValidateVarianceMap$.apply(Variances.scala:127)
at scala.reflect.internal.Variances$VarianceValidator$ValidateVarianceMap$.apply(Variances.scala:125)
at scala.reflect.internal.Types$TypeBounds.mapOver(Types.scala:1578)
at scala.reflect.internal.Variances$VarianceValidator$ValidateVarianceMap$.apply(Variances.scala:130)
at scala.reflect.internal.Variances$VarianceValidator$ValidateVarianceMap$.$anonfun$mapOver$2(Variances.scala:106)
at scala.reflect.internal.Variances$VarianceValidator$ValidateVarianceMap$.$anonfun$mapOver$1(Variances.scala:106)
at scala.reflect.internal.Scopes$Scope.foreach(Scopes.scala:455)
at scala.reflect.internal.Variances$VarianceValidator$ValidateVarianceMap$.mapOver(Variances.scala:106)
at scala.reflect.internal.Types$RefinedType.mapOver(Types.scala:1863)
at scala.reflect.internal.Variances$VarianceValidator$ValidateVarianceMap$.apply(Variances.scala:127)
at scala.reflect.internal.Variances$VarianceValidator$ValidateVarianceMap$.apply(Variances.scala:125)
at scala.reflect.internal.Types$TypeBounds.mapOver(Types.scala:1578)
at scala.reflect.internal.Variances$VarianceValidator$ValidateVarianceMap$.apply(Variances.scala:130)
at scala.reflect.internal.Variances$VarianceValidator$ValidateVarianceMap$.$anonfun$mapOver$2(Variances.scala:106)
at scala.reflect.internal.Variances$VarianceValidator$ValidateVarianceMap$.$anonfun$mapOver$1_
```_