Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Recursive value types lead to SOE #10215

Closed
scabug opened this issue Feb 28, 2017 · 2 comments · Fixed by scala/scala#7606
Closed

Recursive value types lead to SOE #10215

scabug opened this issue Feb 28, 2017 · 2 comments · Fixed by scala/scala#7606
Milestone

Comments

@scabug
Copy link

scabug commented Feb 28, 2017

Trying to compile the following gives a SOE on 2.12.1. Making it a reference class works around the problem.

class One[F[_]](val f: F[One[F]]) extends AnyVal
class Two[A]()
object One {
  val _ = new One[Two](new Two)
}
java.lang.StackOverflowError
	at scala.reflect.internal.Types$Type.baseTypeIndex(Types.scala:903)
	at scala.reflect.internal.tpe.TypeMaps$AsSeenFromMap.scala$reflect$internal$tpe$TypeMaps$AsSeenFromMap$$matchesPrefixAndClass(TypeMaps.scala:632)
	at scala.reflect.internal.tpe.TypeMaps$AsSeenFromMap.loop$3(TypeMaps.scala:602)
	at scala.reflect.internal.tpe.TypeMaps$AsSeenFromMap.classParameterAsSeen(TypeMaps.scala:611)
	at scala.reflect.internal.tpe.TypeMaps$AsSeenFromMap.apply(TypeMaps.scala:486)
	at scala.reflect.internal.tpe.TypeMaps$AsSeenFromMap.apply(TypeMaps.scala:457)
	at scala.reflect.internal.tpe.TypeMaps$TypeMap.mapOver(TypeMaps.scala:115)
	at scala.reflect.internal.tpe.TypeMaps$AsSeenFromMap.apply(TypeMaps.scala:487)
	at scala.reflect.internal.tpe.TypeMaps$AsSeenFromMap.apply(TypeMaps.scala:457)
	at scala.reflect.internal.tpe.TypeMaps$AsSeenFromMap.correspondingTypeArgument(TypeMaps.scala:574)
	at scala.reflect.internal.tpe.TypeMaps$AsSeenFromMap.loop$3(TypeMaps.scala:606)
	at scala.reflect.internal.tpe.TypeMaps$AsSeenFromMap.classParameterAsSeen(TypeMaps.scala:611)
	at scala.reflect.internal.tpe.TypeMaps$AsSeenFromMap.apply(TypeMaps.scala:486)
	at scala.reflect.internal.tpe.TypeMaps$TypeMap.mapOver(TypeMaps.scala:129)
	at scala.reflect.internal.tpe.TypeMaps$AsSeenFromMap.apply(TypeMaps.scala:487)
	at scala.reflect.internal.Types$Type.asSeenFrom(Types.scala:677)
	at scala.reflect.internal.Types$Type.memberType(Types.scala:710)
	at scala.tools.nsc.transform.Erasure.jsig$1(Erasure.scala:326)
	at scala.tools.nsc.transform.Erasure.boxedSig$1(Erasure.scala:243)
	at scala.tools.nsc.transform.Erasure.argSig$1(Erasure.scala:281)
	at scala.tools.nsc.transform.Erasure.$anonfun$javaSig$8(Erasure.scala:295)
	at scala.tools.nsc.transform.Erasure.classSig$1(Erasure.scala:295)
	at scala.tools.nsc.transform.Erasure.jsig$1(Erasure.scala:336)
	at scala.tools.nsc.transform.Erasure.jsig$1(Erasure.scala:332)
	at scala.tools.nsc.transform.Erasure.boxedSig$1(Erasure.scala:243)
	at scala.tools.nsc.transform.Erasure.argSig$1(Erasure.scala:281)
	at scala.tools.nsc.transform.Erasure.$anonfun$javaSig$8(Erasure.scala:295)
	at scala.tools.nsc.transform.Erasure.classSig$1(Erasure.scala:295)
	at scala.tools.nsc.transform.Erasure.jsig$1(Erasure.scala:336)
	at scala.tools.nsc.transform.Erasure.jsig$1(Erasure.scala:332)
	at scala.tools.nsc.transform.Erasure.boxedSig$1(Erasure.scala:243)
	at scala.tools.nsc.transform.Erasure.argSig$1(Erasure.scala:281)
	at scala.tools.nsc.transform.Erasure.$anonfun$javaSig$8(Erasure.scala:295)
	at scala.tools.nsc.transform.Erasure.classSig$1(Erasure.scala:295)
	at scala.tools.nsc.transform.Erasure.jsig$1(Erasure.scala:336)
	at scala.tools.nsc.transform.Erasure.jsig$1(Erasure.scala:332)
	at scala.tools.nsc.transform.Erasure.boxedSig$1(Erasure.scala:243)
    // and so on
[error] Error while emitting App.scala
[error] null
[error] one error found
[error] (compile:compileIncremental) Compilation failed
@scabug
Copy link
Author

scabug commented Feb 28, 2017

Imported From: https://issues.scala-lang.org/browse/SI-10215?orig=1
Reporter: Huw Giddens (hgiddens)
Affected Versions: 2.12.1

@diesalbla
Copy link

This still fails with Scala 2.12.8, but it has been fixed in the current HEAD of Scala 2.13.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants