Closed
Description
Compiler version
Fails in 3.1.1
Works in 3.1.2
Works In 3.1.3-RC4
Fails in 3.1.3-RC5
Fails in 3.2.0-RC1
Minimized code
trait MatchResult[+T]
@main def Test() = {
def convert[T <: Seq[_], U <: MatchResult[_]](fn: T => U)(implicit x: Seq[_] = Seq.empty): U = ???
def resultOf[T](v: T): MatchResult[T] = ???
convert { _ =>
type R = String
resultOf[R](???)
// this would not lead to crash:
// val x = resultOf[R](???)
// x
}
}
Output (click arrow to expand)
java.lang.AssertionError: assertion failed: unresolved symbols: type R (line 11) #6547 when pickling /home/wmazur/projects/virtuslab/community-build3/test.scala
at scala.runtime.Scala3RunTime$.assertFailed(Scala3RunTime.scala:8)
at dotty.tools.dotc.core.tasty.TreePickler.pickle(TreePickler.scala:783)
at dotty.tools.dotc.transform.Pickler.run$$anonfun$1$$anonfun$1(Pickler.scala:72)
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:333)
at dotty.tools.dotc.transform.Pickler.run$$anonfun$1(Pickler.scala:110)
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:333)
at dotty.tools.dotc.transform.Pickler.run(Pickler.scala:110)
at dotty.tools.dotc.core.Phases$Phase.runOn$$anonfun$1(Phases.scala:311)
at scala.collection.immutable.List.map(List.scala:246)
at dotty.tools.dotc.core.Phases$Phase.runOn(Phases.scala:312)
at dotty.tools.dotc.transform.Pickler.runOn(Pickler.scala:115)
at dotty.tools.dotc.Run.runPhases$1$$anonfun$1(Run.scala:234)
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:1328)
at dotty.tools.dotc.Run.runPhases$1(Run.scala:245)
at dotty.tools.dotc.Run.compileUnits$$anonfun$1(Run.scala:253)
at dotty.tools.dotc.Run.compileUnits$$anonfun$adapted$1(Run.scala:262)
at dotty.tools.dotc.util.Stats$.maybeMonitored(Stats.scala:68)
at dotty.tools.dotc.Run.compileUnits(Run.scala:262)
at dotty.tools.dotc.Run.compileSources(Run.scala:186)
at dotty.tools.dotc.Run.compile(Run.scala:170)
at dotty.tools.dotc.Driver.doCompile(Driver.scala:35)
at dotty.tools.xsbt.CompilerBridgeDriver.run(CompilerBridgeDriver.java:88)
at dotty.tools.xsbt.CompilerBridge.run(CompilerBridge.java:22)
at sbt.internal.inc.AnalyzingCompiler.compile(AnalyzingCompiler.scala:91)
at sbt.internal.inc.bloop.internal.BloopHighLevelCompiler.compileSources$1(BloopHighLevelCompiler.scala:133)
at sbt.internal.inc.bloop.internal.BloopHighLevelCompiler.$anonfun$compile$7(BloopHighLevelCompiler.scala:151)
at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
at sbt.internal.inc.bloop.internal.BloopHighLevelCompiler.$anonfun$compile$1(BloopHighLevelCompiler.scala:71)
at bloop.tracing.BraveTracer.traceInternal(BraveTracer.scala:65)
at bloop.tracing.BraveTracer.trace(BraveTracer.scala:39)
at sbt.internal.inc.bloop.internal.BloopHighLevelCompiler.timed$1(BloopHighLevelCompiler.scala:70)
at sbt.internal.inc.bloop.internal.BloopHighLevelCompiler.$anonfun$compile$6(BloopHighLevelCompiler.scala:151)
at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
at monix.eval.internal.TaskRunLoop$.monix$eval$internal$TaskRunLoop$$loop$1(TaskRunLoop.scala:187)
at monix.eval.internal.TaskRunLoop$RestartCallback$1.onSuccess(TaskRunLoop.scala:119)
at monix.eval.Task$.$anonfun$forkedUnit$2(Task.scala:1463)
at java.base/java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1395)
at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373)
at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182)
at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655)
at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622)
at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165)
Error: Unexpected error when compiling project_6d5831c594_6d5831c594-15348604ae: 'assertion failed: unresolved symbols: type R (line 11) #6547 when pickling /home/wmazur/projects/virtuslab/community-build3/test.scala'
Code after typer phase (click arrow to expand)
Differences in enclosing packages and imports originate from minimalizing issue in the original repo
package <empty> {
import util.WithTemporaryCollection.*
import org.specs2.matcher.MatchResult
final class ChangeStreamSpec() extends Object() {
def resultOf[T >: Nothing <: Any](v: T): org.specs2.matcher.MatchResult[T]
=
???
trait Coll() extends Object {}
def convert[T >: Nothing <: Seq[? >: Nothing <: Any],
U >: Nothing <: org.specs2.matcher.MatchResult[? >: Nothing <: Any]
](fn: T => U)(implicit x: Seq[ChangeStreamSpec.this.Coll]): U = ???
def convert$default$2[T >: Nothing <: Seq[? >: Nothing <: Any],
U >: Nothing <: org.specs2.matcher.MatchResult[? >: Nothing <: Any]
](fn: T => U): Seq[ChangeStreamSpec.this.Coll] @uncheckedVariance =
Seq.empty[ChangeStreamSpec.this.Coll]
{
val fn$1: Seq[?] => org.specs2.matcher.MatchResult[R] =
{
{
def $anonfun(_$1: Seq[?]): org.specs2.matcher.MatchResult[R] =
{
type R = String
this.resultOf[R](???):org.specs2.matcher.MatchResult[String]
}
closure($anonfun)
}
}
this.convert[Seq[?], org.specs2.matcher.MatchResult[R]](fn$1)(
this.convert$default$2[Seq[?], org.specs2.matcher.MatchResult[R]](fn$1)
)
}
}
}