Closed
Description
Compiler version
main
Minimized code
import language.experimental.captureChecking
trait IO
case class Inv[X](x: X)
def foo(x: IO^): Inv[IO^{x}] = Inv(x)
def main(io: IO^): Unit =
def test(f: () => IO^) =
List(foo(f()))
Output
[info] running (fork) dotty.tools.dotc.Main -d /Users/linyxus/Workspace/dotty/compiler/../out/default-last-scalac-out.jar -classpath /Users/linyxus/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.12/scala-library-2.13.12.jar:/Users/linyxus/Workspace/dotty/library/../out/bootstrap/scala3-library-bootstrapped/scala-3.4.0-RC1-bin-SNAPSHOT-nonbootstrapped/scala3-library_3-3.4.0-RC1-bin-SNAPSHOT.jar -color:never issues/wildcard-captures.scala
unhandled exception while running cc on issues/wildcard-captures.scala
An unhandled exception was thrown in the compiler.
Please file a crash report here:
https://github.com/lampepfl/dotty/issues/new/choose
For non-enriched exceptions, compile with -Yno-enrich-error-messages.
while compiling: issues/wildcard-captures.scala
during phase: cc
mode: Mode(ImplicitsEnabled)
library version: version 2.13.12
compiler version: version 3.4.0-RC1-bin-SNAPSHOT-nonbootstrapped-git-2945fd1
settings: -classpath /Users/linyxus/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.12/scala-library-2.13.12.jar:/Users/linyxus/Workspace/dotty/library/../out/bootstrap/scala3-library-bootstrapped/scala-3.4.0-RC1-bin-SNAPSHOT-nonbootstrapped/scala3-library_3-3.4.0-RC1-bin-SNAPSHOT.jar -color never -d /
Exception in thread "main" dotty.tools.dotc.cc.IllegalCaptureRef: TypeVar(TypeParamRef((param)1) -> SkolemType(564766469))
at dotty.tools.dotc.cc.CaptureOps$package$.toCaptureRef(CaptureOps.scala:87)
at dotty.tools.dotc.cc.CaptureOps$package$.$anonfun$1(CaptureOps.scala:96)
at scala.collection.immutable.List.map(List.scala:246)
at dotty.tools.dotc.cc.CaptureOps$package$.toCaptureSet(CaptureOps.scala:96)
at dotty.tools.dotc.cc.Setup$$anon$3.apply(Setup.scala:289)
at dotty.tools.dotc.core.Types$TypeMap.op$proxy17$1(Types.scala:6019)
at dotty.tools.dotc.core.Types$TypeMap.mapArg(Types.scala:6019)
at dotty.tools.dotc.core.Types$TypeMap.mapArgs(Types.scala:6023)
at dotty.tools.dotc.core.Types$TypeMap.mapOver(Types.scala:6060)
at dotty.tools.dotc.cc.Setup$$anon$3.recur(Setup.scala:278)
at dotty.tools.dotc.cc.Setup$$anon$3.apply(Setup.scala:302)
at dotty.tools.dotc.cc.Setup.dotty$tools$dotc$cc$Setup$$transformExplicitType(Setup.scala:305)
at dotty.tools.dotc.cc.Setup.dotty$tools$dotc$cc$Setup$$transformTT(Setup.scala:316)
at dotty.tools.dotc.cc.Setup$$anon$5.traverse(Setup.scala:419)
at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.recur$3(tpd.scala:1295)
at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1298)
at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1290)
at dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.foldOver(Trees.scala:1679)
at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverseChildren(Trees.scala:1797)
at dotty.tools.dotc.cc.Setup$$anon$5.traverse(Setup.scala:422)
at dotty.tools.dotc.cc.Setup$$anon$5.traverse(Setup.scala:397)
at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.recur$3(tpd.scala:1295)
... (More stack trace)
Expectation
The compiler should not crash.
/cc @odersky