bug icon indicating copy to clipboard operation
bug copied to clipboard

StackOverflow error in compiler involving type alias, existential, higher kinds

Open scabug opened this issue 11 years ago • 5 comments
trafficstars

class TypeTest {
  type Foldable[X[_]] = X[_]
  def forComp[Coll[X]<:Foldable[Coll]](c: Coll[_]) = c.map //
}
Exception in thread "main" java.lang.StackOverflowError
	at scala.reflect.internal.Types$AbstractTypeRef$class.thisInfo(Types.scala:2099)
	at scala.reflect.internal.Types$AbstractArgsTypeRef.thisInfo(Types.scala:2327)
	at scala.reflect.internal.Types$TypeRef.baseClasses(Types.scala:2199)
	at scala.reflect.internal.Types$SimpleTypeProxy$class.baseClasses(Types.scala:165)
	at scala.reflect.internal.Types$ExistentialType.baseClasses(Types.scala:2550)
	at scala.reflect.internal.Types$TypeRef.baseClasses(Types.scala:2199)
	at scala.reflect.internal.Types$SubType.baseClasses(Types.scala:1070)
	at scala.reflect.internal.Types$TypeRef.baseClasses(Types.scala:2199)
	at scala.reflect.internal.Types$SimpleTypeProxy$class.baseClasses(Types.scala:165)
	at scala.reflect.internal.Types$ExistentialType.baseClasses(Types.scala:2550)
	at scala.reflect.internal.Types$TypeRef.baseClasses(Types.scala:2199)
	at scala.reflect.internal.Types$SubType.baseClasses(Types.scala:1070)
	at scala.reflect.internal.Types$TypeRef.baseClasses(Types.scala:2199)

scabug avatar Apr 09 '14 11:04 scabug

Imported From: https://issues.scala-lang.org/browse/SI-8488?orig=1 Reporter: Raul Bache (arneball) Affected Versions: 2.10.3, 2.11.0-RC1 See #8252

scabug avatar Apr 09 '14 11:04 scabug

Raul Bache (arneball) said: Don't even ask me what i was trying to achieve :D

scabug avatar Apr 09 '14 12:04 scabug

@retronym said: Variations:

scala> def cyclicAliasing[Coll[X]<:Coll[X]](c: Coll[Any]) = ()
<console>:7: error: cyclic aliasing or subtyping involving type Coll
       def cyclicAliasing[Coll[X]<:Coll[X]](c: Coll[Any]) = ()
                          ^
<console>:7: error: Coll does not take type parameters
       def cyclicAliasing[Coll[X]<:Coll[X]](c: Coll[Any]) = ()
                                               ^

scala>   def compilerDeath[Coll[X]<:Coll[_]](c: Coll[Any]) = ()

SOE in ErasureMap

The compiler probably should reject compilerDeath on the same grounds as cyclicAliasing, but I'm a bit sketchy about the rules here.

scabug avatar Apr 09 '14 12:04 scabug

@retronym said: See also #8252 which is in the same neighbourhood as this bug.

scabug avatar Apr 09 '14 12:04 scabug

Scala 2.13.16 also crashes, and so does Scala 3.6.3

SethTisue avatar Feb 11 '25 19:02 SethTisue