Skip to content

Compiler crashes on dependent type in an enum case #8069

Closed
@CherryWorm

Description

@CherryWorm

minimized code

trait A
  type B

enum Test
  case Test(a: A, b: a.B)
Stack trace
core.compile java.lang.AssertionError: assertion failed: orphan parameter reference: TermParamRef(a)
    dotty.DottyPredef$.assertFail(DottyPredef.scala:17)
    dotty.tools.dotc.core.tasty.TreePickler.pickleNewType(TreePickler.scala:265)
    dotty.tools.dotc.core.tasty.TreePickler.pickleType(TreePickler.scala:140)
    dotty.tools.dotc.core.tasty.TreePickler.pickleNewType(TreePickler.scala:192)
    dotty.tools.dotc.core.tasty.TreePickler.pickleType(TreePickler.scala:140)
    dotty.tools.dotc.core.tasty.TreePickler.pickleTree(TreePickler.scala:542)
    dotty.tools.dotc.core.tasty.TreePickler.pickleTpt(TreePickler.scala:291)
    dotty.tools.dotc.core.tasty.TreePickler.pickleTree$$anonfun$37$$anonfun$1(TreePickler.scala:389)
    dotty.runtime.function.JProcedure1.apply(JProcedure1.java:15)
    dotty.runtime.function.JProcedure1.apply(JProcedure1.java:10)
    scala.collection.immutable.List.foreach(List.scala:305)
    dotty.tools.dotc.core.tasty.TreePickler.pickleTree$$anonfun$3(TreePickler.scala:389)
    dotty.runtime.function.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
    dotty.tools.dotc.core.tasty.TreePickler.withLength(TreePickler.scala:44)
    dotty.tools.dotc.core.tasty.TreePickler.pickleTree(TreePickler.scala:390)
    dotty.tools.dotc.core.tasty.TreePickler.pickleTree$$anonfun$36$$anonfun$1(TreePickler.scala:382)
    dotty.runtime.function.JProcedure1.apply(JProcedure1.java:15)
    dotty.runtime.function.JProcedure1.apply(JProcedure1.java:10)
    scala.collection.immutable.List.foreach(List.scala:305)
    dotty.tools.dotc.core.tasty.TreePickler.pickleTree$$anonfun$2(TreePickler.scala:382)
    dotty.runtime.function.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
    dotty.tools.dotc.core.tasty.TreePickler.withLength(TreePickler.scala:44)
    dotty.tools.dotc.core.tasty.TreePickler.pickleTree(TreePickler.scala:383)
    dotty.tools.dotc.core.tasty.TreePickler.pickleTreeUnlessEmpty(TreePickler.scala:294)
    dotty.tools.dotc.core.tasty.TreePickler.pickleDef$$anonfun$2(TreePickler.scala:308)
    dotty.runtime.function.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
    dotty.tools.dotc.core.tasty.TreePickler.withLength(TreePickler.scala:44)
    dotty.tools.dotc.core.tasty.TreePickler.pickleDef(TreePickler.scala:310)
    dotty.tools.dotc.core.tasty.TreePickler.pickleTree(TreePickler.scala:504)
    dotty.tools.dotc.core.tasty.TreePickler.pickleStats$$anonfun$2(TreePickler.scala:329)
    dotty.runtime.function.JProcedure1.apply(JProcedure1.java:15)
    dotty.runtime.function.JProcedure1.apply(JProcedure1.java:10)
    scala.collection.immutable.List.foreach(List.scala:305)
    dotty.tools.dotc.core.tasty.TreePickler.pickleStats(TreePickler.scala:329)
    dotty.tools.dotc.core.tasty.TreePickler.pickleTree$$anonfun$25(TreePickler.scala:530)
    dotty.runtime.function.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
    dotty.tools.dotc.core.tasty.TreePickler.withLength(TreePickler.scala:44)
    dotty.tools.dotc.core.tasty.TreePickler.pickleTree(TreePickler.scala:531)
    dotty.tools.dotc.core.tasty.TreePickler.pickleDef$$anonfun$2(TreePickler.scala:305)
    dotty.runtime.function.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
    dotty.tools.dotc.core.tasty.TreePickler.withLength(TreePickler.scala:44)
    dotty.tools.dotc.core.tasty.TreePickler.pickleDef(TreePickler.scala:310)
    dotty.tools.dotc.core.tasty.TreePickler.pickleTree(TreePickler.scala:506)
    dotty.tools.dotc.core.tasty.TreePickler.pickleStats$$anonfun$2(TreePickler.scala:329)
    dotty.runtime.function.JProcedure1.apply(JProcedure1.java:15)
    dotty.runtime.function.JProcedure1.apply(JProcedure1.java:10)
    scala.collection.immutable.List.foreach(List.scala:305)
    dotty.tools.dotc.core.tasty.TreePickler.pickleStats(TreePickler.scala:329)
    dotty.tools.dotc.core.tasty.TreePickler.pickleTree$$anonfun$25(TreePickler.scala:530)
    dotty.runtime.function.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
    dotty.tools.dotc.core.tasty.TreePickler.withLength(TreePickler.scala:44)
    dotty.tools.dotc.core.tasty.TreePickler.pickleTree(TreePickler.scala:531)
    dotty.tools.dotc.core.tasty.TreePickler.pickleDef$$anonfun$2(TreePickler.scala:305)
    dotty.runtime.function.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
    dotty.tools.dotc.core.tasty.TreePickler.withLength(TreePickler.scala:44)
    dotty.tools.dotc.core.tasty.TreePickler.pickleDef(TreePickler.scala:310)
    dotty.tools.dotc.core.tasty.TreePickler.pickleTree(TreePickler.scala:506)
    dotty.tools.dotc.core.tasty.TreePickler.pickleStats$$anonfun$2(TreePickler.scala:329)
    dotty.runtime.function.JProcedure1.apply(JProcedure1.java:15)
    dotty.runtime.function.JProcedure1.apply(JProcedure1.java:10)
    scala.collection.immutable.List.foreach(List.scala:305)
    dotty.tools.dotc.core.tasty.TreePickler.pickleStats(TreePickler.scala:329)
    dotty.tools.dotc.core.tasty.TreePickler.pickleTree$$anonfun$27(TreePickler.scala:540)
    dotty.runtime.function.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
    dotty.tools.dotc.core.tasty.TreePickler.withLength(TreePickler.scala:44)
    dotty.tools.dotc.core.tasty.TreePickler.pickleTree(TreePickler.scala:540)
    dotty.tools.dotc.core.tasty.TreePickler.pickle$$anonfun$1(TreePickler.scala:695)
    dotty.runtime.function.JProcedure1.apply(JProcedure1.java:15)
    dotty.runtime.function.JProcedure1.apply(JProcedure1.java:10)
    scala.collection.immutable.List.foreach(List.scala:305)
    dotty.tools.dotc.core.tasty.TreePickler.pickle(TreePickler.scala:695)
    dotty.tools.dotc.transform.Pickler.run$$anonfun$10$$anonfun$8(Pickler.scala:63)
    dotty.runtime.function.JProcedure1.apply(JProcedure1.java:15)
    dotty.runtime.function.JProcedure1.apply(JProcedure1.java:10)
    scala.collection.immutable.List.foreach(List.scala:305)
    dotty.tools.dotc.transform.Pickler.run$$anonfun$2(Pickler.scala:87)
    dotty.runtime.function.JProcedure1.apply(JProcedure1.java:15)
    dotty.runtime.function.JProcedure1.apply(JProcedure1.java:10)
    scala.collection.immutable.List.foreach(List.scala:305)
    dotty.tools.dotc.transform.Pickler.run(Pickler.scala:87)
    dotty.tools.dotc.core.Phases$Phase.runOn$$anonfun$1(Phases.scala:315)
    scala.collection.immutable.List.map(List.scala:219)
    dotty.tools.dotc.core.Phases$Phase.runOn(Phases.scala:316)
    dotty.tools.dotc.transform.Pickler.runOn(Pickler.scala:91)
    dotty.tools.dotc.Run.runPhases$4$$anonfun$4(Run.scala:162)
    dotty.runtime.function.JProcedure1.apply(JProcedure1.java:15)
    dotty.runtime.function.JProcedure1.apply(JProcedure1.java:10)
    scala.collection.ArrayOps$.foreach$extension(ArrayOps.scala:1323)
    dotty.tools.dotc.Run.runPhases$5(Run.scala:172)
    dotty.tools.dotc.Run.compileUnits$$anonfun$1(Run.scala:180)
    dotty.runtime.function.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
    dotty.tools.dotc.util.Stats$.maybeMonitored(Stats.scala:65)
    dotty.tools.dotc.Run.compileUnits(Run.scala:187)
    dotty.tools.dotc.Run.compileSources(Run.scala:124)
    dotty.tools.dotc.Run.compile(Run.scala:107)
    dotty.tools.dotc.Driver.doCompile(Driver.scala:36)
    dotty.tools.dotc.Driver.process(Driver.scala:189)
    dotty.tools.dotc.Main.process(Main.scala)
    xsbt.CachedCompilerImpl.run(CachedCompilerImpl.java:69)
    xsbt.CompilerInterface.run(CompilerInterface.java:41)
    java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

Metadata

Metadata

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions