- Notifications
You must be signed in to change notification settings - Fork 1.1k
Open
Labels
itype:bugitype:crashregressionThis worked in a previous version but doesn't anymoreThis worked in a previous version but doesn't anymorestat:needs triageEvery issue needs to have an "area" and "itype" labelEvery issue needs to have an "area" and "itype" label
Description
Based on the OpenCB failure in valerylobachev/data-dictionary-builder
when investigating performance issues - the project build was stuck in the typer, commenting out parts of the code uncovered crash during pickler
Compiler version
Last good release: 3.8.0-RC1-bin-20250818-aaa39c5-NIGHTLY
First bad release: 3.8.0-RC1-bin-20250819-1f13619-NIGHTLY
Bisect points to 1f13619 / #23769
Minimized code
class Generator: private def generateTable(table: Table) = val (ownRelations, _) = calculateOwnRelations(table) None private def calculateOwnRelations(table: Table) = val ownRelations = table.relations.filter(_.association.isDefined) (ownRelations, Nil) case class Table(relations: Seq[TableRelation]) case class TableRelation(association: Option[Association]) trait Association
Output (click arrow to expand)
error when pickling type (table : Table) error when pickling type (table.relations : Seq[TableRelation]) error when pickling tree this of class class dotty.tools.dotc.ast.Trees$This error when pickling tree this.type of class class dotty.tools.dotc.ast.Trees$SingletonTypeTree error when pickling tree this.type | pred.type of class class dotty.tools.dotc.ast.Trees$AppliedTypeTree error when pickling tree new _root_.scala.annotation.retains[this.type | pred.type] of class class dotty.tools.dotc.ast.Trees$TypeApply error when pickling tree new _root_.scala.annotation.retains[this.type | pred.type]() of class class dotty.tools.dotc.ast.Trees$Apply error when pickling type Seq[TableRelation] error when pickling type (Seq[TableRelation], scala.collection.immutable.Nil.type) error when pickling tree Tuple2.unapply[Seq[TableRelation], scala.collection.immutable.Nil.type](ownRelations @ _, _) of class class dotty.tools.dotc.ast.Trees$UnApply error when pickling tree case Tuple2.unapply[Seq[TableRelation], scala.collection.immutable.Nil.type](ownRelations @ _, _) => ownRelations:Seq[TableRelation] of class class dotty.tools.dotc.ast.Trees$CaseDef error when pickling tree Generator.this.calculateOwnRelations(table):(Seq[TableRelation], scala.collection.immutable.Nil.type) @unchecked match { case Tuple2.unapply[Seq[TableRelation], scala.collection.immutable.Nil.type](ownRelations @ _, _) => ownRelations:Seq[TableRelation] } of class class dotty.tools.dotc.ast.Trees$Match error when pickling tree val ownRelations: Seq[TableRelation] = this.calculateOwnRelations(table):(Seq[TableRelation], scala.collection.immutable.Nil.type) @unchecked match { case Tuple2.unapply[Seq[TableRelation], scala.collection.immutable.Nil.type](ownRelations @ _, _) => ownRelations:Seq[TableRelation] } of class class dotty.tools.dotc.ast.Trees$ValDef error when pickling tree { val ownRelations: Seq[TableRelation] = this.calculateOwnRelations(table):(Seq[TableRelation], scala.collection.immutable.Nil.type) @unchecked match { case Tuple2.unapply[Seq[TableRelation], scala.collection.immutable.Nil.type](ownRelations @ _, _) => ownRelations:Seq[TableRelation] } None } of class class dotty.tools.dotc.ast.Trees$Block error when pickling tree private[this] def generateTable(table: Table): None.type = { val ownRelations: Seq[TableRelation] = this.calculateOwnRelations(table):(Seq[TableRelation], scala.collection.immutable.Nil.type) @unchecked match { case Tuple2.unapply[Seq[TableRelation], scala.collection.immutable.Nil.type](ownRelations @ _, _) => ownRelations:Seq[TableRelation] } None } of class class dotty.tools.dotc.ast.Trees$DefDef error when pickling tree () extends Object() { private[this] def generateTable(table: Table): None.type = { val ownRelations: Seq[TableRelation] = this.calculateOwnRelations(table):(Seq[TableRelation], scala.collection.immutable.Nil.type) @unchecked match { case Tuple2.unapply[Seq[TableRelation], scala.collection.immutable.Nil.type](ownRelations @ _, _) => ownRelations:Seq[TableRelation] } None } private[this] def calculateOwnRelations(table: Table): (Seq[TableRelation], scala.collection.immutable.Nil.type) = { val ownRelations: Seq[TableRelation] = table.relations.filter((_$1: TableRelation) => _$1.association.isDefined) Tuple2.apply[Seq[TableRelation], scala.collection.immutable.Nil.type](ownRelations, Nil) } } of class class dotty.tools.dotc.ast.Trees$Template error when pickling tree @SourceFile("test.scala") class Generator() extends Object() { private[this] def generateTable(table: Table): None.type = { val ownRelations: Seq[TableRelation] = this.calculateOwnRelations(table):(Seq[TableRelation], scala.collection.immutable.Nil.type) @unchecked match { case Tuple2.unapply[Seq[TableRelation], scala.collection.immutable.Nil.type](ownRelations @ _, _) => ownRelations:Seq[TableRelation] } None } private[this] def calculateOwnRelations(table: Table): (Seq[TableRelation], scala.collection.immutable.Nil.type) = { val ownRelations: Seq[TableRelation] = table.relations.filter((_$1: TableRelation) => _$1.association.isDefined) Tuple2.apply[Seq[TableRelation], scala.collection.immutable.Nil.type](ownRelations, Nil) } } of class class dotty.tools.dotc.ast.Trees$TypeDef error when pickling tree package <empty> { @SourceFile("test.scala") class Generator() extends Object() { private[this] def generateTable(table: Table): None.type = { val ownRelations: Seq[TableRelation] = this.calculateOwnRelations(table):(Seq[TableRelation], scala.collection.immutable.Nil.type) @unchecked match { case Tuple2.unapply[Seq[TableRelation], scala.collection.immutable.Nil.type](ownRelations @ _, _) => ownRelations:Seq[TableRelation] } None } private[this] def calculateOwnRelations(table: Table): (Seq[TableRelation], scala.collection.immutable.Nil.type) = { val ownRelations: Seq[TableRelation] = table.relations.filter((_$1: TableRelation) => _$1.association.isDefined) Tuple2.apply[Seq[TableRelation], scala.collection.immutable.Nil.type](ownRelations, Nil) } } } of class class dotty.tools.dotc.ast.Trees$PackageDef unhandled exception while running pickler on /Users/wmazur/projects/scala/community-build3/test.scala An unhandled exception was thrown in the compiler. Please file a crash report here: https://github.com/scala/scala3/issues/new/choose For non-enriched exceptions, compile with -Xno-enrich-error-messages. while compiling: /Users/wmazur/projects/scala/community-build3/test.scala during phase: pickler mode: Mode(ImplicitsEnabled) library version: version (unknown) compiler version: version 3.8.0-RC1-bin-20250819-1f13619-NIGHTLY-git-1f13619 settings: -classpath /Users/wmazur/Library/Caches/Coursier/v1/https/repo.scala-lang.org/artifactory/maven-nightlies/org/scala-lang/scala3-library_3/3.8.0-RC1-bin-20250819-1f13619-NIGHTLY/scala3-library_3-3.8.0-RC1-bin-20250819-1f13619-NIGHTLY.jar:/Users/wmazur/Library/Caches/Coursier/v1/https/repo.scala-lang.org/artifactory/maven-nightlies/org/scala-lang/scala-library/3.8.0-RC1-bin-20250819-1f13619-NIGHTLY/scala-library-3.8.0-RC1-bin-20250819-1f13619-NIGHTLY.jar -d /Users/wmazur/projects/scala/community-build3/.scala-build/community-build3_484a8f3fc4-9d23cdd7be/classes/main -sourceroot /Users/wmazur/projects/scala/community-build3 Exception in thread "main" java.lang.AssertionError: assertion failed: orphan parameter reference: TermParamRef(table) at scala.runtime.Scala3RunTime$.assertFailed(Scala3RunTime.scala:10) at dotty.tools.dotc.core.tasty.TreePickler.pickleNewType(TreePickler.scala:318) at dotty.tools.dotc.core.tasty.TreePickler.pickleType(TreePickler.scala:183) at dotty.tools.dotc.core.tasty.TreePickler.pickleExternalRef$1(TreePickler.scala:224) at dotty.tools.dotc.core.tasty.TreePickler.pickleNewType(TreePickler.scala:245) at dotty.tools.dotc.core.tasty.TreePickler.pickleType(TreePickler.scala:183) at dotty.tools.dotc.core.tasty.TreePickler.pickleTree(TreePickler.scala:454) at dotty.tools.dotc.core.tasty.TreePickler.pickleTree(TreePickler.scala:725) at dotty.tools.dotc.core.tasty.TreePickler.pickleTree$$anonfun$21(TreePickler.scala:740) at scala.runtime.function.JProcedure1.apply(JProcedure1.java:15) at scala.runtime.function.JProcedure1.apply(JProcedure1.java:10) at scala.collection.immutable.List.foreach(List.scala:337) at dotty.tools.dotc.core.tasty.TreePickler.pickleTree(TreePickler.scala:740) at dotty.tools.dotc.core.tasty.TreePickler.pickleTpt(TreePickler.scala:352) at dotty.tools.dotc.core.tasty.TreePickler.pickleTree$$anonfun$4(TreePickler.scala:534) at scala.runtime.function.JProcedure1.apply(JProcedure1.java:15) at scala.runtime.function.JProcedure1.apply(JProcedure1.java:10) at scala.collection.immutable.List.foreach(List.scala:337) at dotty.tools.dotc.core.tasty.TreePickler.pickleTree(TreePickler.scala:534) at dotty.tools.dotc.core.tasty.TreePickler.pickleTree(TreePickler.scala:519) at dotty.tools.dotc.core.tasty.TreePickler.pickleNewType(TreePickler.scala:286) at dotty.tools.dotc.core.tasty.TreePickler.pickleType(TreePickler.scala:183) at dotty.tools.dotc.core.tasty.TreePickler.pickleNewType$$anonfun$2(TreePickler.scala:204) at scala.runtime.function.JProcedure1.apply(JProcedure1.java:15) at scala.runtime.function.JProcedure1.apply(JProcedure1.java:10) at scala.collection.immutable.List.foreach(List.scala:337) at dotty.tools.dotc.core.tasty.TreePickler.pickleNewType(TreePickler.scala:204) at dotty.tools.dotc.core.tasty.TreePickler.pickleType(TreePickler.scala:183) at dotty.tools.dotc.core.tasty.TreePickler.pickleTree(TreePickler.scala:643) at dotty.tools.dotc.core.tasty.TreePickler.pickleTree(TreePickler.scala:598) at dotty.tools.dotc.core.tasty.TreePickler.pickleTree$$anonfun$7(TreePickler.scala:594) at scala.runtime.function.JProcedure1.apply(JProcedure1.java:15) at scala.runtime.function.JProcedure1.apply(JProcedure1.java:10) at scala.collection.immutable.List.foreach(List.scala:337) at dotty.tools.dotc.core.tasty.TreePickler.pickleTree(TreePickler.scala:594) at dotty.tools.dotc.core.tasty.TreePickler.pickleTreeUnlessEmpty(TreePickler.scala:356) at dotty.tools.dotc.core.tasty.TreePickler.pickleDef(TreePickler.scala:390) at dotty.tools.dotc.core.tasty.TreePickler.pickleTree(TreePickler.scala:647) at dotty.tools.dotc.core.tasty.TreePickler.pickleTree$$anonfun$6(TreePickler.scala:571) at scala.runtime.function.JProcedure1.apply(JProcedure1.java:15) at scala.runtime.function.JProcedure1.apply(JProcedure1.java:10) at scala.collection.immutable.List.foreach(List.scala:337) at dotty.tools.dotc.core.tasty.TreePickler.pickleTree(TreePickler.scala:571) at dotty.tools.dotc.core.tasty.TreePickler.pickleTreeUnlessEmpty(TreePickler.scala:356) at dotty.tools.dotc.core.tasty.TreePickler.pickleDef(TreePickler.scala:390) at dotty.tools.dotc.core.tasty.TreePickler.pickleTree(TreePickler.scala:662) at dotty.tools.dotc.core.tasty.TreePickler.pickleStats$$anonfun$2(TreePickler.scala:423) at scala.runtime.function.JProcedure1.apply(JProcedure1.java:15) at scala.runtime.function.JProcedure1.apply(JProcedure1.java:10) at scala.collection.immutable.List.foreach(List.scala:337) at dotty.tools.dotc.core.tasty.TreePickler.pickleStats(TreePickler.scala:423) at dotty.tools.dotc.core.tasty.TreePickler.pickleTree(TreePickler.scala:698) at dotty.tools.dotc.core.tasty.TreePickler.pickleDef(TreePickler.scala:381) at dotty.tools.dotc.core.tasty.TreePickler.pickleTree(TreePickler.scala:664) at dotty.tools.dotc.core.tasty.TreePickler.pickleStats$$anonfun$2(TreePickler.scala:423) at scala.runtime.function.JProcedure1.apply(JProcedure1.java:15) at scala.runtime.function.JProcedure1.apply(JProcedure1.java:10) at scala.collection.immutable.List.foreach(List.scala:337) at dotty.tools.dotc.core.tasty.TreePickler.pickleStats(TreePickler.scala:423) at dotty.tools.dotc.core.tasty.TreePickler.pickleTree(TreePickler.scala:714) at dotty.tools.dotc.core.tasty.TreePickler.pickle$$anonfun$1(TreePickler.scala:946) at scala.runtime.function.JProcedure1.apply(JProcedure1.java:15) at scala.runtime.function.JProcedure1.apply(JProcedure1.java:10) at scala.collection.immutable.List.foreach(List.scala:337) at dotty.tools.dotc.core.tasty.TreePickler.pickle(TreePickler.scala:944) at dotty.tools.dotc.transform.Pickler.run$$anonfun$1$$anonfun$1(Pickler.scala:306) at scala.runtime.function.JProcedure1.apply(JProcedure1.java:15) at scala.runtime.function.JProcedure1.apply(JProcedure1.java:10) at scala.collection.immutable.List.foreach(List.scala:337) at dotty.tools.dotc.transform.Pickler.run$$anonfun$1(Pickler.scala:279) at scala.runtime.function.JProcedure1.apply(JProcedure1.java:15) at scala.runtime.function.JProcedure1.apply(JProcedure1.java:10) at scala.collection.immutable.List.foreach(List.scala:337) at dotty.tools.dotc.transform.Pickler.run(Pickler.scala:278) at dotty.tools.dotc.core.Phases$Phase.runOn$$anonfun$1(Phases.scala:383) at scala.runtime.function.JProcedure1.apply(JProcedure1.java:15) at scala.runtime.function.JProcedure1.apply(JProcedure1.java:10) at scala.collection.immutable.List.foreach(List.scala:337) at dotty.tools.dotc.core.Phases$Phase.runOn(Phases.scala:376) at dotty.tools.dotc.transform.Pickler.runPhase$1(Pickler.scala:392) at dotty.tools.dotc.transform.Pickler.runOn(Pickler.scala:398) at dotty.tools.dotc.Run.runPhases$1$$anonfun$1(Run.scala:380) at scala.runtime.function.JProcedure1.apply(JProcedure1.java:15) at scala.runtime.function.JProcedure1.apply(JProcedure1.java:10) at scala.collection.ArrayOps$.foreach$extension(ArrayOps.scala:1327) at dotty.tools.dotc.Run.runPhases$1(Run.scala:373) at dotty.tools.dotc.Run.compileUnits$$anonfun$1$$anonfun$2(Run.scala:420) at dotty.tools.dotc.Run.compileUnits$$anonfun$1$$anonfun$adapted$1(Run.scala:420) at scala.Function0.apply$mcV$sp(Function0.scala:45) at dotty.tools.dotc.Run.showProgress(Run.scala:482) at dotty.tools.dotc.Run.compileUnits$$anonfun$1(Run.scala:420) at dotty.tools.dotc.Run.compileUnits$$anonfun$adapted$1(Run.scala:432) at dotty.tools.dotc.util.Stats$.maybeMonitored(Stats.scala:69) at dotty.tools.dotc.Run.compileUnits(Run.scala:432) at dotty.tools.dotc.Run.compileSources(Run.scala:319) at dotty.tools.dotc.Run.compile(Run.scala:304) at dotty.tools.dotc.Driver.doCompile(Driver.scala:37) at dotty.tools.dotc.Driver.process(Driver.scala:201) at dotty.tools.dotc.Driver.process(Driver.scala:169) at dotty.tools.dotc.Driver.process(Driver.scala:181) at dotty.tools.dotc.Driver.main(Driver.scala:211) at dotty.tools.dotc.Main.main(Main.scala) Compilation failed
Metadata
Metadata
Assignees
Labels
itype:bugitype:crashregressionThis worked in a previous version but doesn't anymoreThis worked in a previous version but doesn't anymorestat:needs triageEvery issue needs to have an "area" and "itype" labelEvery issue needs to have an "area" and "itype" label