Skip to content

StackOverflow #4372

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

Closed
sir-wabbit opened this issue Apr 25, 2018 · 1 comment
Closed

StackOverflow #4372

sir-wabbit opened this issue Apr 25, 2018 · 1 comment

Comments

@sir-wabbit
Copy link

class X[A >: X[_ <: X[_]] <: X[A]]
Exception in thread "main" java.lang.StackOverflowError
	at dotty.tools.dotc.core.Types$TypeMap.mapOver(Types.scala:3940)
	at dotty.tools.dotc.core.TypeComparer$$anon$1.apply(TypeComparer.scala:156)
	at dotty.tools.dotc.core.Types$TypeMap.mapOver(Types.scala:3978)
	at dotty.tools.dotc.core.TypeComparer$$anon$1.apply(TypeComparer.scala:156)
	at dotty.tools.dotc.core.Types$TypeMap.mapArgs$1(Types.scala:3959)
	at dotty.tools.dotc.core.Types$TypeMap.mapOver(Types.scala:3968)
	at dotty.tools.dotc.core.TypeComparer$$anon$1.apply(TypeComparer.scala:156)
	at dotty.tools.dotc.core.Types$TypeMap.mapOver(Types.scala:3980)
	at dotty.tools.dotc.core.TypeComparer$$anon$1.apply(TypeComparer.scala:156)
	at dotty.tools.dotc.core.Types$TypeMap.mapArgs$1(Types.scala:3959)
	at dotty.tools.dotc.core.Types$TypeMap.mapOver(Types.scala:3968)
	at dotty.tools.dotc.core.TypeComparer$$anon$1.apply(TypeComparer.scala:156)
	at dotty.tools.dotc.core.Types$TypeMap.$anonfun$mapOver$5(Types.scala:3942)
	at dotty.tools.dotc.core.Types$VariantTraversal.atVariance(Types.scala:3888)
	at dotty.tools.dotc.core.Types$TypeMap.mapOver(Types.scala:3942)
	at dotty.tools.dotc.core.TypeComparer$$anon$1.apply(TypeComparer.scala:154)
	at dotty.tools.dotc.core.TypeComparer.monitoredIsSubType$1(TypeComparer.scala:159)
	at dotty.tools.dotc.core.TypeComparer.$anonfun$recur$2(TypeComparer.scala:853)
	at scala.runtime.java8.JFunction0$mcZ$sp.apply(JFunction0$mcZ$sp.java:12)
	at dotty.tools.dotc.reporting.trace$.op1$3(trace.scala:32)
	at dotty.tools.dotc.reporting.trace$.apply(trace.scala:33)
	at dotty.tools.dotc.reporting.trace$.apply(trace.scala:39)
	at dotty.tools.dotc.core.TypeComparer.recur(TypeComparer.scala:129)
	at dotty.tools.dotc.core.TypeComparer.isSubType(TypeComparer.scala:124)
	at dotty.tools.dotc.core.TypeComparer.isSubType(TypeComparer.scala:127)
	at dotty.tools.dotc.core.TypeComparer.topLevelSubType(TypeComparer.scala:110)
	at dotty.tools.dotc.core.Types$Type.$anonfun$$less$colon$less$1(Types.scala:774)
	at scala.runtime.java8.JFunction0$mcZ$sp.apply(JFunction0$mcZ$sp.java:12)
	at dotty.tools.dotc.util.Stats$.track(Stats.scala:35)
	at dotty.tools.dotc.core.Types$Type.$less$colon$less(Types.scala:774)
	at dotty.tools.dotc.core.Types$TypeBounds.contains(Types.scala:3580)
	at dotty.tools.dotc.core.TypeComparer.isSubArg$1(TypeComparer.scala:892)
	at dotty.tools.dotc.core.TypeComparer.isSubArgs(TypeComparer.scala:905)
	at dotty.tools.dotc.core.TypeComparer.isMatchingApply$1(TypeComparer.scala:685)
	at dotty.tools.dotc.core.TypeComparer.compareAppliedType2$1(TypeComparer.scala:789)
	at dotty.tools.dotc.core.TypeComparer.thirdTry$1(TypeComparer.scala:405)
	at dotty.tools.dotc.core.TypeComparer.secondTry$1(TypeComparer.scala:363)
	at dotty.tools.dotc.core.TypeComparer.firstTry$1(TypeComparer.scala:285)
	at dotty.tools.dotc.core.TypeComparer.monitoredIsSubType$1(TypeComparer.scala:163)
	at dotty.tools.dotc.core.TypeComparer.$anonfun$recur$2(TypeComparer.scala:853)
	at scala.runtime.java8.JFunction0$mcZ$sp.apply(JFunction0$mcZ$sp.java:12)
	at dotty.tools.dotc.reporting.trace$.op1$3(trace.scala:32)
	at dotty.tools.dotc.reporting.trace$.apply(trace.scala:33)
	at dotty.tools.dotc.reporting.trace$.apply(trace.scala:39)
	at dotty.tools.dotc.core.TypeComparer.recur(TypeComparer.scala:129)
	at dotty.tools.dotc.core.TypeComparer.isSubType(TypeComparer.scala:124)
	at dotty.tools.dotc.core.TypeComparer.isSubType(TypeComparer.scala:127)
	at dotty.tools.dotc.core.ConstraintHandling.isSubTypeWhenFrozen(ConstraintHandling.scala:164)
	at dotty.tools.dotc.core.ConstraintHandling.isSubTypeWhenFrozen$(ConstraintHandling.scala:161)
	at dotty.tools.dotc.core.TypeComparer.isSubTypeWhenFrozen(TypeComparer.scala:19)
	at dotty.tools.dotc.core.TypeComparer.dropIfSuper(TypeComparer.scala:1372)
	at dotty.tools.dotc.core.TypeComparer.$anonfun$glb$2(TypeComparer.scala:1243)
	at dotty.tools.dotc.reporting.trace$.op1$3(trace.scala:32)
	at dotty.tools.dotc.reporting.trace$.apply(trace.scala:33)
	at dotty.tools.dotc.core.TypeComparer.glb(TypeComparer.scala:1229)
	at dotty.tools.dotc.core.Types$Type.$anonfun$$amp$1(Types.scala:863)
	at dotty.tools.dotc.util.Stats$.track(Stats.scala:35)
	at dotty.tools.dotc.core.Types$Type.$amp(Types.scala:863)
	at dotty.tools.dotc.core.Types$TypeBounds.$amp(Types.scala:3586)
	at dotty.tools.dotc.core.Types$TypeBounds.$amp(Types.scala:3594)
	at dotty.tools.dotc.core.Types$Type.recoverable_$amp(Types.scala:883)
	at dotty.tools.dotc.core.Types$NamedType.argDenot(Types.scala:1801)
	at dotty.tools.dotc.core.Types$NamedType.fromDesignator$1(Types.scala:1726)
	at dotty.tools.dotc.core.Types$NamedType.computeDenot(Types.scala:1744)
	at dotty.tools.dotc.core.Types$NamedType.denot(Types.scala:1700)
	at dotty.tools.dotc.core.Types$NamedType.info(Types.scala:1689)
	at dotty.tools.dotc.core.Types$Type.dealias1(Types.scala:995)
	at dotty.tools.dotc.core.Types$Type.dealias(Types.scala:1026)
	at dotty.tools.dotc.core.Types$Type.isSingleton(Types.scala:246)
	at dotty.tools.dotc.core.TypeComparer.isSingletonBounds$1(TypeComparer.scala:1221)
	at dotty.tools.dotc.core.TypeComparer.singletonInterval(TypeComparer.scala:1224)
	at dotty.tools.dotc.core.TypeComparer.glbArgs(TypeComparer.scala:1348)
	at dotty.tools.dotc.core.TypeComparer.distributeAnd(TypeComparer.scala:1509)
	at dotty.tools.dotc.core.TypeComparer.$anonfun$andType$2(TypeComparer.scala:1440)
	at dotty.tools.dotc.reporting.trace$.op1$3(trace.scala:32)
	at dotty.tools.dotc.reporting.trace$.apply(trace.scala:33)
	at dotty.tools.dotc.core.TypeComparer.andType(TypeComparer.scala:1439)
	at dotty.tools.dotc.core.TypeComparer.$anonfun$glb$2(TypeComparer.scala:1263)
	at dotty.tools.dotc.reporting.trace$.op1$3(trace.scala:32)
	at dotty.tools.dotc.reporting.trace$.apply(trace.scala:33)
	at dotty.tools.dotc.core.TypeComparer.glb(TypeComparer.scala:1229)
	at dotty.tools.dotc.core.Types$Type.$anonfun$$amp$1(Types.scala:863)
	at dotty.tools.dotc.util.Stats$.track(Stats.scala:35)
	at dotty.tools.dotc.core.Types$Type.$amp(Types.scala:863)
	at dotty.tools.dotc.core.Types$TypeBounds.$amp(Types.scala:3586)
	at dotty.tools.dotc.core.Types$TypeBounds.$amp(Types.scala:3594)
	at dotty.tools.dotc.core.Types$Type.recoverable_$amp(Types.scala:883)
	at dotty.tools.dotc.core.Types$NamedType.argDenot(Types.scala:1801)
	at dotty.tools.dotc.core.Types$NamedType.fromDesignator$1(Types.scala:1726)
	at dotty.tools.dotc.core.Types$NamedType.computeDenot(Types.scala:1744)
	at dotty.tools.dotc.core.Types$NamedType.denot(Types.scala:1700)
	at dotty.tools.dotc.core.Types$NamedType.info(Types.scala:1689)
	at dotty.tools.dotc.core.Types$Type.dealias1(Types.scala:995)
	at dotty.tools.dotc.core.Types$Type.dealias(Types.scala:1026)
	at dotty.tools.dotc.core.Types$Type.isSingleton(Types.scala:246)
	at dotty.tools.dotc.core.TypeComparer.isSingletonBounds$1(TypeComparer.scala:1221)
	at dotty.tools.dotc.core.TypeComparer.singletonInterval(TypeComparer.scala:1224)
	at dotty.tools.dotc.core.TypeComparer.glbArgs(TypeComparer.scala:1348)
	at dotty.tools.dotc.core.TypeComparer.distributeAnd(TypeComparer.scala:1509)
	at dotty.tools.dotc.core.TypeComparer.$anonfun$andType$2(TypeComparer.scala:1440)
	at dotty.tools.dotc.reporting.trace$.op1$3(trace.scala:32)
	at dotty.tools.dotc.reporting.trace$.apply(trace.scala:33)
	at dotty.tools.dotc.core.TypeComparer.andType(TypeComparer.scala:1439)
	at dotty.tools.dotc.core.TypeComparer.$anonfun$glb$2(TypeComparer.scala:1263)
	at dotty.tools.dotc.reporting.trace$.op1$3(trace.scala:32)
	at dotty.tools.dotc.reporting.trace$.apply(trace.scala:33)
	at dotty.tools.dotc.core.TypeComparer.glb(TypeComparer.scala:1229)
	at dotty.tools.dotc.core.Types$Type.$anonfun$$amp$1(Types.scala:863)
	at dotty.tools.dotc.util.Stats$.track(Stats.scala:35)
	at dotty.tools.dotc.core.Types$Type.$amp(Types.scala:863)
	at dotty.tools.dotc.core.Types$TypeBounds.$amp(Types.scala:3586)
	at dotty.tools.dotc.core.Types$TypeBounds.$amp(Types.scala:3594)
	at dotty.tools.dotc.core.Types$Type.recoverable_$amp(Types.scala:883)
	at dotty.tools.dotc.core.Types$NamedType.argDenot(Types.scala:1801)
	at dotty.tools.dotc.core.Types$NamedType.fromDesignator$1(Types.scala:1726)
	at dotty.tools.dotc.core.Types$NamedType.computeDenot(Types.scala:1744)
	at dotty.tools.dotc.core.Types$NamedType.denot(Types.scala:1700)
	at dotty.tools.dotc.core.Types$NamedType.info(Types.scala:1689)
	at dotty.tools.dotc.core.Types$Type.dealias1(Types.scala:995)
	at dotty.tools.dotc.core.Types$Type.dealias(Types.scala:1026)
	at dotty.tools.dotc.core.Types$Type.isSingleton(Types.scala:246)
	at dotty.tools.dotc.core.TypeComparer.isSingletonBounds$1(TypeComparer.scala:1221)
	at dotty.tools.dotc.core.TypeComparer.singletonInterval(TypeComparer.scala:1224)
	at dotty.tools.dotc.core.TypeComparer.glbArgs(TypeComparer.scala:1348)
	at dotty.tools.dotc.core.TypeComparer.distributeAnd(TypeComparer.scala:1509)
	at dotty.tools.dotc.core.TypeComparer.$anonfun$andType$2(TypeComparer.scala:1440)
	at dotty.tools.dotc.reporting.trace$.op1$3(trace.scala:32)
	at dotty.tools.dotc.reporting.trace$.apply(trace.scala:33)
	at dotty.tools.dotc.core.TypeComparer.andType(TypeComparer.scala:1439)
	at dotty.tools.dotc.core.TypeComparer.$anonfun$glb$2(TypeComparer.scala:1263)
	at dotty.tools.dotc.reporting.trace$.op1$3(trace.scala:32)
	at dotty.tools.dotc.reporting.trace$.apply(trace.scala:33)
	at dotty.tools.dotc.core.TypeComparer.glb(TypeComparer.scala:1229)
	at dotty.tools.dotc.core.Types$Type.$anonfun$$amp$1(Types.scala:863)
	at dotty.tools.dotc.util.Stats$.track(Stats.scala:35)
	at dotty.tools.dotc.core.Types$Type.$amp(Types.scala:863)
	at dotty.tools.dotc.core.Types$TypeBounds.$amp(Types.scala:3586)
	at dotty.tools.dotc.core.Types$TypeBounds.$amp(Types.scala:3594)
	at dotty.tools.dotc.core.Types$Type.recoverable_$amp(Types.scala:883)
	at dotty.tools.dotc.core.Types$NamedType.argDenot(Types.scala:1801)
	at dotty.tools.dotc.core.Types$NamedType.fromDesignator$1(Types.scala:1726)
	at dotty.tools.dotc.core.Types$NamedType.computeDenot(Types.scala:1744)
	at dotty.tools.dotc.core.Types$NamedType.denot(Types.scala:1700)
	at dotty.tools.dotc.core.Types$NamedType.info(Types.scala:1689)
	at dotty.tools.dotc.core.Types$Type.dealias1(Types.scala:995)
	at dotty.tools.dotc.core.Types$Type.dealias(Types.scala:1026)
	at dotty.tools.dotc.core.Types$Type.isSingleton(Types.scala:246)
	at dotty.tools.dotc.core.TypeComparer.isSingletonBounds$1(TypeComparer.scala:1221)
	at dotty.tools.dotc.core.TypeComparer.singletonInterval(TypeComparer.scala:1224)
	at dotty.tools.dotc.core.TypeComparer.glbArgs(TypeComparer.scala:1348)
	at dotty.tools.dotc.core.TypeComparer.distributeAnd(TypeComparer.scala:1509)
	at dotty.tools.dotc.core.TypeComparer.$anonfun$andType$2(TypeComparer.scala:1440)
	at dotty.tools.dotc.reporting.trace$.op1$3(trace.scala:32)
	at dotty.tools.dotc.reporting.trace$.apply(trace.scala:33)
	at dotty.tools.dotc.core.TypeComparer.andType(TypeComparer.scala:1439)
	at dotty.tools.dotc.core.TypeComparer.$anonfun$glb$2(TypeComparer.scala:1263)
	at dotty.tools.dotc.reporting.trace$.op1$3(trace.scala:32)
	at dotty.tools.dotc.reporting.trace$.apply(trace.scala:33)
	at dotty.tools.dotc.core.TypeComparer.glb(TypeComparer.scala:1229)
	at dotty.tools.dotc.core.Types$Type.$anonfun$$amp$1(Types.scala:863)
	at dotty.tools.dotc.util.Stats$.track(Stats.scala:35)
	at dotty.tools.dotc.core.Types$Type.$amp(Types.scala:863)
	at dotty.tools.dotc.core.Types$TypeBounds.$amp(Types.scala:3586)
	at dotty.tools.dotc.core.Types$TypeBounds.$amp(Types.scala:3594)
	at dotty.tools.dotc.core.Types$Type.recoverable_$amp(Types.scala:883)
	at dotty.tools.dotc.core.Types$NamedType.argDenot(Types.scala:1801)
	at dotty.tools.dotc.core.Types$NamedType.fromDesignator$1(Types.scala:1726)
	at dotty.tools.dotc.core.Types$NamedType.computeDenot(Types.scala:1744)
	at dotty.tools.dotc.core.Types$NamedType.denot(Types.scala:1700)
	at dotty.tools.dotc.core.Types$NamedType.info(Types.scala:1689)
	at dotty.tools.dotc.core.Types$Type.dealias1(Types.scala:995)
	at dotty.tools.dotc.core.Types$Type.dealias(Types.scala:1026)
	at dotty.tools.dotc.core.Types$Type.isSingleton(Types.scala:246)
	at dotty.tools.dotc.core.TypeComparer.isSingletonBounds$1(TypeComparer.scala:1221)
	at dotty.tools.dotc.core.TypeComparer.singletonInterval(TypeComparer.scala:1224)
	at dotty.tools.dotc.core.TypeComparer.glbArgs(TypeComparer.scala:1348)
	at dotty.tools.dotc.core.TypeComparer.distributeAnd(TypeComparer.scala:1509)
	at dotty.tools.dotc.core.TypeComparer.$anonfun$andType$2(TypeComparer.scala:1440)
	at dotty.tools.dotc.reporting.trace$.op1$3(trace.scala:32)
	at dotty.tools.dotc.reporting.trace$.apply(trace.scala:33)
	at dotty.tools.dotc.core.TypeComparer.andType(TypeComparer.scala:1439)
	at dotty.tools.dotc.core.TypeComparer.$anonfun$glb$2(TypeComparer.scala:1263)
	at dotty.tools.dotc.reporting.trace$.op1$3(trace.scala:32)
	at dotty.tools.dotc.reporting.trace$.apply(trace.scala:33)
	at dotty.tools.dotc.core.TypeComparer.glb(TypeComparer.scala:1229)
	at dotty.tools.dotc.core.Types$Type.$anonfun$$amp$1(Types.scala:863)
	at dotty.tools.dotc.util.Stats$.track(Stats.scala:35)
	at dotty.tools.dotc.core.Types$Type.$amp(Types.scala:863)
	at dotty.tools.dotc.core.Types$TypeBounds.$amp(Types.scala:3586)
	at dotty.tools.dotc.core.Types$TypeBounds.$amp(Types.scala:3594)
	at dotty.tools.dotc.core.Types$Type.recoverable_$amp(Types.scala:883)
	at dotty.tools.dotc.core.Types$NamedType.argDenot(Types.scala:1801)
	at dotty.tools.dotc.core.Types$NamedType.fromDesignator$1(Types.scala:1726)
	at dotty.tools.dotc.core.Types$NamedType.computeDenot(Types.scala:1744)
	at dotty.tools.dotc.core.Types$NamedType.denot(Types.scala:1700)
	at dotty.tools.dotc.core.Types$NamedType.info(Types.scala:1689)
	at dotty.tools.dotc.core.Types$Type.dealias1(Types.scala:995)
	at dotty.tools.dotc.core.Types$Type.dealias(Types.scala:1026)
	at dotty.tools.dotc.core.Types$Type.isSingleton(Types.scala:246)
	at dotty.tools.dotc.core.TypeComparer.isSingletonBounds$1(TypeComparer.scala:1221)
	at dotty.tools.dotc.core.TypeComparer.singletonInterval(TypeComparer.scala:1224)
	at dotty.tools.dotc.core.TypeComparer.glbArgs(TypeComparer.scala:1348)
	at dotty.tools.dotc.core.TypeComparer.distributeAnd(TypeComparer.scala:1509)
	at dotty.tools.dotc.core.TypeComparer.$anonfun$andType$2(TypeComparer.scala:1440)
	at dotty.tools.dotc.reporting.trace$.op1$3(trace.scala:32)
	at dotty.tools.dotc.reporting.trace$.apply(trace.scala:33)
	at dotty.tools.dotc.core.TypeComparer.andType(TypeComparer.scala:1439)
	at dotty.tools.dotc.core.TypeComparer.$anonfun$glb$2(TypeComparer.scala:1263)
	at dotty.tools.dotc.reporting.trace$.op1$3(trace.scala:32)
	at dotty.tools.dotc.reporting.trace$.apply(trace.scala:33)
	at dotty.tools.dotc.core.TypeComparer.glb(TypeComparer.scala:1229)
	at dotty.tools.dotc.core.Types$Type.$anonfun$$amp$1(Types.scala:863)
	at dotty.tools.dotc.util.Stats$.track(Stats.scala:35)
	at dotty.tools.dotc.core.Types$Type.$amp(Types.scala:863)
	at dotty.tools.dotc.core.Types$TypeBounds.$amp(Types.scala:3586)
	at dotty.tools.dotc.core.Types$TypeBounds.$amp(Types.scala:3594)
	at dotty.tools.dotc.core.Types$Type.recoverable_$amp(Types.scala:883)
	at dotty.tools.dotc.core.Types$NamedType.argDenot(Types.scala:1801)
	at dotty.tools.dotc.core.Types$NamedType.fromDesignator$1(Types.scala:1726)
	at dotty.tools.dotc.core.Types$NamedType.computeDenot(Types.scala:1744)
	at dotty.tools.dotc.core.Types$NamedType.denot(Types.scala:1700)
	at dotty.tools.dotc.core.Types$NamedType.info(Types.scala:1689)
	at dotty.tools.dotc.core.Types$Type.dealias1(Types.scala:995)
	at dotty.tools.dotc.core.Types$Type.dealias(Types.scala:1026)
	at dotty.tools.dotc.core.Types$Type.isSingleton(Types.scala:246)
	at dotty.tools.dotc.core.TypeComparer.isSingletonBounds$1(TypeComparer.scala:1221)
	at dotty.tools.dotc.core.TypeComparer.singletonInterval(TypeComparer.scala:1224)
	at dotty.tools.dotc.core.TypeComparer.glbArgs(TypeComparer.scala:1348)
	at dotty.tools.dotc.core.TypeComparer.distributeAnd(TypeComparer.scala:1509)
	at dotty.tools.dotc.core.TypeComparer.$anonfun$andType$2(TypeComparer.scala:1440)
	at dotty.tools.dotc.reporting.trace$.op1$3(trace.scala:32)
	at dotty.tools.dotc.reporting.trace$.apply(trace.scala:33)
	at dotty.tools.dotc.core.TypeComparer.andType(TypeComparer.scala:1439)
	at dotty.tools.dotc.core.TypeComparer.$anonfun$glb$2(TypeComparer.scala:1263)
	at dotty.tools.dotc.reporting.trace$.op1$3(trace.scala:32)
	at dotty.tools.dotc.reporting.trace$.apply(trace.scala:33)
	at dotty.tools.dotc.core.TypeComparer.glb(TypeComparer.scala:1229)
	at dotty.tools.dotc.core.Types$Type.$anonfun$$amp$1(Types.scala:863)
	at dotty.tools.dotc.util.Stats$.track(Stats.scala:35)
	at dotty.tools.dotc.core.Types$Type.$amp(Types.scala:863)
	at dotty.tools.dotc.core.Types$TypeBounds.$amp(Types.scala:3586)
	at dotty.tools.dotc.core.Types$TypeBounds.$amp(Types.scala:3594)
	at dotty.tools.dotc.core.Types$Type.recoverable_$amp(Types.scala:883)
	at dotty.tools.dotc.core.Types$NamedType.argDenot(Types.scala:1801)
	at dotty.tools.dotc.core.Types$NamedType.fromDesignator$1(Types.scala:1726)
odersky added a commit to dotty-staging/dotty that referenced this issue Apr 26, 2018
This now handles all errors from scala#4368 to scala#4372 and also scala#318.
odersky added a commit to dotty-staging/dotty that referenced this issue Apr 26, 2018
This now handles all errors from scala#4368 to scala#4372 and also scala#318.
Blaisorblade pushed a commit to dotty-staging/dotty that referenced this issue May 7, 2018
Blaisorblade pushed a commit to dotty-staging/dotty that referenced this issue May 30, 2018
nicolasstucki added a commit to dotty-staging/dotty that referenced this issue Jan 18, 2019
@nicolasstucki
Copy link
Contributor

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

No branches or pull requests

4 participants