Skip to content

Implicit pass of "this" to a callback crashes with capture types #20135

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
willcrichton opened this issue Apr 9, 2024 · 2 comments · Fixed by #20155
Closed

Implicit pass of "this" to a callback crashes with capture types #20135

willcrichton opened this issue Apr 9, 2024 · 2 comments · Fixed by #20155
Assignees
Milestone

Comments

@willcrichton
Copy link

Compiler version

3.4.0

Minimized code

import language.experimental.captureChecking

class Network

class Page(using nw: Network^):
  def render(client: Page^{nw} ?-> Unit) = client(using this)

def main(net: Network^) =
  var page = Page(using net)
  page.render(())

Output (click arrow to expand)

[info] welcome to sbt 1.9.9 (Homebrew Java 21.0.2)
[info] loading settings for project capture-experiments-build-build from metals.sbt ...
[info] loading project definition from /Users/will/Code/tmp/capture-experiments/capture-experiments/project/project
[info] loading settings for project capture-experiments-build from metals.sbt ...
[info] loading project definition from /Users/will/Code/tmp/capture-experiments/capture-experiments/project
[success] Generated .bloop/capture-experiments-build.json
[success] Total time: 1 s, completed Apr 8, 2024, 5:14:01 PM
[info] loading settings for project root from build.sbt ...
[info] set current project to capture-experiments (in build file:/Users/will/Code/tmp/capture-experiments/capture-experiments/)
[info] compiling 1 Scala source to /Users/will/Code/tmp/capture-experiments/capture-experiments/target/scala-3.4.0/classes ...

  unhandled exception while running cc on /Users/will/Code/tmp/capture-experiments/capture-experiments/src/main/scala/Main.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: /Users/will/Code/tmp/capture-experiments/capture-experiments/src/main/scala/Main.scala
        during phase: cc
                mode: Mode(ImplicitsEnabled)
     library version: version 2.13.12
    compiler version: version 3.4.0
            settings: -bootclasspath /Users/will/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala3-library_3/3.4.0/scala3-library_3-3.4.0.jar:/Users/will/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.12/scala-library-2.13.12.jar -classpath /Users/will/Code/tmp/capture-experiments/capture-experiments/target/scala-3.4.0/classes -d /Users/will/Code/tmp/capture-experiments/capture-experiments/target/scala-3.4.0/classes

[error] ## Exception when compiling 1 sources to /Users/will/Code/tmp/capture-experiments/capture-experiments/target/scala-3.4.0/classes
[error] dotty.tools.dotc.cc.IllegalCaptureRef: TermRef(TypeRef(ThisType(TypeRef(NoPrefix,module class <empty>)),class Page),val nw)
[error] dotty.tools.dotc.cc.CaptureOps$package$.toCaptureRef(CaptureOps.scala:87)
[error] dotty.tools.dotc.cc.CaptureOps$package$.$anonfun$1(CaptureOps.scala:96)
[error] scala.collection.immutable.List.map(List.scala:246)
[error] dotty.tools.dotc.cc.CaptureOps$package$.toCaptureSet(CaptureOps.scala:96)
[error] dotty.tools.dotc.cc.Setup$$anon$3.apply(Setup.scala:289)
[error] dotty.tools.dotc.cc.Setup.dotty$tools$dotc$cc$Setup$$transformExplicitType(Setup.scala:305)
[error] dotty.tools.dotc.cc.Setup.dotty$tools$dotc$cc$Setup$$transformTT(Setup.scala:316)
[error] dotty.tools.dotc.cc.Setup$$anon$5.transformResultType(Setup.scala:377)
[error] dotty.tools.dotc.cc.Setup$$anon$5.traverse(Setup.scala:404)
[error] dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.recur$3(tpd.scala:1295)
[error] dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1298)
[error] dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1290)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverse(Trees.scala:1795)
[error] dotty.tools.dotc.cc.Setup$$anon$5.traverse$$anonfun$1(Setup.scala:395)
[error] scala.runtime.function.JProcedure1.apply(JProcedure1.java:15)
[error] scala.runtime.function.JProcedure1.apply(JProcedure1.java:10)
[error] scala.collection.immutable.List.foreach(List.scala:333)
[error] dotty.tools.dotc.cc.Setup$$anon$5.traverse(Setup.scala:395)
[error] dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.recur$3(tpd.scala:1295)
[error] dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1298)
[error] dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1290)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.foldOver(Trees.scala:1693)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverseChildren(Trees.scala:1797)
[error] dotty.tools.dotc.cc.Setup$$anon$5.traverse(Setup.scala:422)
[error] dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.recur$3(tpd.scala:1295)
[error] dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1298)
[error] dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1290)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.foldOver(Trees.scala:1679)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverseChildren(Trees.scala:1797)
[error] dotty.tools.dotc.cc.Setup$$anon$5.traverse(Setup.scala:422)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1796)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1796)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.foldOver(Trees.scala:1693)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverseChildren(Trees.scala:1797)
[error] dotty.tools.dotc.cc.Setup$$anon$5.traverse(Setup.scala:422)
[error] dotty.tools.dotc.cc.Setup$$anon$5.traverse(Setup.scala:397)
[error] dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.recur$3(tpd.scala:1295)
[error] dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1298)
[error] dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1290)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverse(Trees.scala:1795)
[error] dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.recur$3(tpd.scala:1296)
[error] dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1298)
[error] dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1290)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverse(Trees.scala:1795)
[error] dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.recur$3(tpd.scala:1296)
[error] dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1298)
[error] dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1290)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.foldOver(Trees.scala:1755)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverseChildren(Trees.scala:1797)
[error] dotty.tools.dotc.cc.Setup$$anon$5.traverse(Setup.scala:422)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1796)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1796)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.foldOver(Trees.scala:1752)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverseChildren(Trees.scala:1797)
[error] dotty.tools.dotc.cc.Setup$$anon$5.traverse(Setup.scala:415)
[error] dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.recur$3(tpd.scala:1295)
[error] dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1298)
[error] dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1290)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverse(Trees.scala:1795)
[error] dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.recur$3(tpd.scala:1296)
[error] dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1298)
[error] dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1290)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverse(Trees.scala:1795)
[error] dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.recur$3(tpd.scala:1296)
[error] dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1298)
[error] dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1290)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverse(Trees.scala:1795)
[error] dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.recur$3(tpd.scala:1296)
[error] dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1298)
[error] dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1290)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverse(Trees.scala:1795)
[error] dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.recur$3(tpd.scala:1293)
[error] dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1298)
[error] dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1290)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverse(Trees.scala:1795)
[error] dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.recur$3(tpd.scala:1293)
[error] dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1298)
[error] dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1290)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.foldOver(Trees.scala:1761)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverseChildren(Trees.scala:1797)
[error] dotty.tools.dotc.cc.Setup$$anon$5.traverse(Setup.scala:422)
[error] dotty.tools.dotc.cc.Setup.setupUnit(Setup.scala:654)
[error] dotty.tools.dotc.cc.CheckCaptures$CaptureChecker.checkUnit(CheckCaptures.scala:1162)
[error] dotty.tools.dotc.transform.Recheck.run(Recheck.scala:167)
[error] dotty.tools.dotc.cc.CheckCaptures.run(CheckCaptures.scala:209)
[error] dotty.tools.dotc.core.Phases$Phase.runOn$$anonfun$1(Phases.scala:354)
[error] scala.runtime.function.JProcedure1.apply(JProcedure1.java:15)
[error] scala.runtime.function.JProcedure1.apply(JProcedure1.java:10)
[error] scala.collection.immutable.List.foreach(List.scala:333)
[error] dotty.tools.dotc.core.Phases$Phase.runOn(Phases.scala:360)
[error] dotty.tools.dotc.transform.Recheck.runOn(Recheck.scala:171)
[error] dotty.tools.dotc.Run.runPhases$1$$anonfun$1(Run.scala:315)
[error] scala.runtime.function.JProcedure1.apply(JProcedure1.java:15)
[error] scala.runtime.function.JProcedure1.apply(JProcedure1.java:10)
[error] scala.collection.ArrayOps$.foreach$extension(ArrayOps.scala:1323)
[error] dotty.tools.dotc.Run.runPhases$1(Run.scala:337)
[error] dotty.tools.dotc.Run.compileUnits$$anonfun$1(Run.scala:348)
[error] dotty.tools.dotc.Run.compileUnits$$anonfun$adapted$1(Run.scala:357)
[error] dotty.tools.dotc.util.Stats$.maybeMonitored(Stats.scala:71)
[error] dotty.tools.dotc.Run.compileUnits(Run.scala:357)
[error] dotty.tools.dotc.Run.compileSources(Run.scala:261)
[error] dotty.tools.dotc.Run.compile(Run.scala:246)
[error] dotty.tools.dotc.Driver.doCompile(Driver.scala:37)
[error] dotty.tools.xsbt.CompilerBridgeDriver.run(CompilerBridgeDriver.java:141)
[error] dotty.tools.xsbt.CompilerBridge.run(CompilerBridge.java:22)
[error] sbt.internal.inc.AnalyzingCompiler.compile(AnalyzingCompiler.scala:91)
[error] sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$7(MixedAnalyzingCompiler.scala:193)
[error] scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
[error] sbt.internal.inc.MixedAnalyzingCompiler.timed(MixedAnalyzingCompiler.scala:248)
[error] sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$4(MixedAnalyzingCompiler.scala:183)
[error] sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$4$adapted(MixedAnalyzingCompiler.scala:163)
[error] sbt.internal.inc.JarUtils$.withPreviousJar(JarUtils.scala:239)
[error] sbt.internal.inc.MixedAnalyzingCompiler.compileScala$1(MixedAnalyzingCompiler.scala:163)
[error] sbt.internal.inc.MixedAnalyzingCompiler.compile(MixedAnalyzingCompiler.scala:211)
[error] sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1(IncrementalCompilerImpl.scala:534)
[error] sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1$adapted(IncrementalCompilerImpl.scala:534)
[error] sbt.internal.inc.Incremental$.$anonfun$apply$5(Incremental.scala:180)
[error] sbt.internal.inc.Incremental$.$anonfun$apply$5$adapted(Incremental.scala:178)
[error] sbt.internal.inc.Incremental$$anon$2.run(Incremental.scala:464)
[error] sbt.internal.inc.IncrementalCommon$CycleState.next(IncrementalCommon.scala:116)
[error] sbt.internal.inc.IncrementalCommon$$anon$1.next(IncrementalCommon.scala:56)
[error] sbt.internal.inc.IncrementalCommon$$anon$1.next(IncrementalCommon.scala:52)
[error] sbt.internal.inc.IncrementalCommon.cycle(IncrementalCommon.scala:263)
[error] sbt.internal.inc.Incremental$.$anonfun$incrementalCompile$8(Incremental.scala:419)
[error] sbt.internal.inc.Incremental$.withClassfileManager(Incremental.scala:506)
[error] sbt.internal.inc.Incremental$.incrementalCompile(Incremental.scala:406)
[error] sbt.internal.inc.Incremental$.apply(Incremental.scala:172)
[error] sbt.internal.inc.IncrementalCompilerImpl.compileInternal(IncrementalCompilerImpl.scala:534)
[error] sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileIncrementally$1(IncrementalCompilerImpl.scala:488)
[error] sbt.internal.inc.IncrementalCompilerImpl.handleCompilationError(IncrementalCompilerImpl.scala:332
[error] sbt.internal.inc.IncrementalCompilerImpl.compileIncrementally(IncrementalCompilerImpl.scala:425)
[error] sbt.internal.inc.IncrementalCompilerImpl.compile(IncrementalCompilerImpl.scala:137)
[error] sbt.Defaults$.compileIncrementalTaskImpl(Defaults.scala:2371)
[error] sbt.Defaults$.$anonfun$compileIncrementalTask$2(Defaults.scala:2321)
[error] sbt.internal.server.BspCompileTask$.$anonfun$compute$1(BspCompileTask.scala:31)
[error] sbt.internal.io.Retry$.apply(Retry.scala:47)
[error] sbt.internal.io.Retry$.apply(Retry.scala:29)
[error] sbt.internal.io.Retry$.apply(Retry.scala:24)
[error] sbt.internal.server.BspCompileTask$.compute(BspCompileTask.scala:31)
[error] sbt.Defaults$.$anonfun$compileIncrementalTask$1(Defaults.scala:2319)
[error] scala.Function1.$anonfun$compose$1(Function1.scala:49)
[error] sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:63)
[error] sbt.std.Transform$$anon$4.work(Transform.scala:69)
[error] sbt.Execute.$anonfun$submit$2(Execute.scala:283)
[error] sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:24)
[error] sbt.Execute.work(Execute.scala:292)
[error] sbt.Execute.$anonfun$submit$1(Execute.scala:283)
[error] sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:265)
[error] sbt.CompletionService$$anon$2.call(CompletionService.scala:65)
[error] java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
[error] java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572)
[error] java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
[error] java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
[error] java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
[error] java.base/java.lang.Thread.run(Thread.java:1583)
[error]
[error] dotty.tools.dotc.cc.IllegalCaptureRef: TermRef(TypeRef(ThisType(TypeRef(NoPrefix,module class <empty>)),class Page),val nw)
[error] 	at dotty.tools.dotc.cc.CaptureOps$package$.toCaptureRef(CaptureOps.scala:87)
[error] 	at dotty.tools.dotc.cc.CaptureOps$package$.$anonfun$1(CaptureOps.scala:96)
[error] 	at scala.collection.immutable.List.map(List.scala:246)
[error] 	at dotty.tools.dotc.cc.CaptureOps$package$.toCaptureSet(CaptureOps.scala:96)
[error] 	at dotty.tools.dotc.cc.Setup$$anon$3.apply(Setup.scala:289)
[error] 	at dotty.tools.dotc.cc.Setup.dotty$tools$dotc$cc$Setup$$transformExplicitType(Setup.scala:305)
[error] 	at dotty.tools.dotc.cc.Setup.dotty$tools$dotc$cc$Setup$$transformTT(Setup.scala:316)
[error] 	at dotty.tools.dotc.cc.Setup$$anon$5.transformResultType(Setup.scala:377)
[error] 	at dotty.tools.dotc.cc.Setup$$anon$5.traverse(Setup.scala:404)
[error] 	at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.recur$3(tpd.scala:1295
[error] 	at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1298)
[error] 	at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1290)
[error] 	at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverse(Trees.scala:1795)
[error] 	at dotty.tools.dotc.cc.Setup$$anon$5.traverse$$anonfun$1(Setup.scala:395)
[error] 	at scala.runtime.function.JProcedure1.apply(JProcedure1.java:15)
[error] 	at scala.runtime.function.JProcedure1.apply(JProcedure1.java:10)
[error] 	at scala.collection.immutable.List.foreach(List.scala:333)
[error] 	at dotty.tools.dotc.cc.Setup$$anon$5.traverse(Setup.scala:395)
[error] 	at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.recur$3(tpd.scala:1295
[error] 	at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1298)
[error] 	at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1290)
[error] 	at dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.foldOver(Trees.scala:1693)
[error] 	at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverseChildren(Trees.scala:1797)
[error] 	at dotty.tools.dotc.cc.Setup$$anon$5.traverse(Setup.scala:422)
[error] 	at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.recur$3(tpd.scala:1295
[error] 	at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1298)
[error] 	at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1290)
[error] 	at dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.foldOver(Trees.scala:1679)
[error] 	at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverseChildren(Trees.scala:1797)
[error] 	at dotty.tools.dotc.cc.Setup$$anon$5.traverse(Setup.scala:422)
[error] 	at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1796)
[error] 	at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1796)
[error] 	at dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.foldOver(Trees.scala:1693)
[error] 	at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverseChildren(Trees.scala:1797)
[error] 	at dotty.tools.dotc.cc.Setup$$anon$5.traverse(Setup.scala:422)
[error] 	at dotty.tools.dotc.cc.Setup$$anon$5.traverse(Setup.scala:397)
[error] 	at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.recur$3(tpd.scala:1295
[error] 	at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1298)
[error] 	at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1290)
[error] 	at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverse(Trees.scala:1795)
[error] 	at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.recur$3(tpd.scala:1296
[error] 	at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1298)
[error] 	at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1290)
[error] 	at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverse(Trees.scala:1795)
[error] 	at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.recur$3(tpd.scala:1296
[error] 	at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1298)
[error] 	at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1290)
[error] 	at dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.foldOver(Trees.scala:1755)
[error] 	at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverseChildren(Trees.scala:1797)
[error] 	at dotty.tools.dotc.cc.Setup$$anon$5.traverse(Setup.scala:422)
[error] 	at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1796)
[error] 	at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1796)
[error] 	at dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.foldOver(Trees.scala:1752)
[error] 	at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverseChildren(Trees.scala:1797)
[error] 	at dotty.tools.dotc.cc.Setup$$anon$5.traverse(Setup.scala:415)
[error] 	at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.recur$3(tpd.scala:1295
[error] 	at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1298)
[error] 	at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1290)
[error] 	at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverse(Trees.scala:1795)
[error] 	at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.recur$3(tpd.scala:1296
[error] 	at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1298)
[error] 	at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1290)
[error] 	at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverse(Trees.scala:1795)
[error] 	at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.recur$3(tpd.scala:1296
[error] 	at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1298)
[error] 	at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1290)
[error] 	at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverse(Trees.scala:1795)
[error] 	at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.recur$3(tpd.scala:1296
[error] 	at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1298)
[error] 	at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1290)
[error] 	at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverse(Trees.scala:1795)
[error] 	at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.recur$3(tpd.scala:1293
[error] 	at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1298)
[error] 	at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1290)
[error] 	at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverse(Trees.scala:1795)
[error] 	at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.recur$3(tpd.scala:1293
[error] 	at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1298)
[error] 	at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1290)
[error] 	at dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.foldOver(Trees.scala:1761)
[error] 	at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverseChildren(Trees.scala:1797)
[error] 	at dotty.tools.dotc.cc.Setup$$anon$5.traverse(Setup.scala:422)
[error] 	at dotty.tools.dotc.cc.Setup.setupUnit(Setup.scala:654)
[error] 	at dotty.tools.dotc.cc.CheckCaptures$CaptureChecker.checkUnit(CheckCaptures.scala:1162)
[error] 	at dotty.tools.dotc.transform.Recheck.run(Recheck.scala:167)
[error] 	at dotty.tools.dotc.cc.CheckCaptures.run(CheckCaptures.scala:209)
[error] 	at dotty.tools.dotc.core.Phases$Phase.runOn$$anonfun$1(Phases.scala:354)
[error] 	at scala.runtime.function.JProcedure1.apply(JProcedure1.java:15)
[error] 	at scala.runtime.function.JProcedure1.apply(JProcedure1.java:10)
[error] 	at scala.collection.immutable.List.foreach(List.scala:333)
[error] 	at dotty.tools.dotc.core.Phases$Phase.runOn(Phases.scala:360)
[error] 	at dotty.tools.dotc.transform.Recheck.runOn(Recheck.scala:171)
[error] 	at dotty.tools.dotc.Run.runPhases$1$$anonfun$1(Run.scala:315)
[error] 	at scala.runtime.function.JProcedure1.apply(JProcedure1.java:15)
[error] 	at scala.runtime.function.JProcedure1.apply(JProcedure1.java:10)
[error] 	at scala.collection.ArrayOps$.foreach$extension(ArrayOps.scala:1323)
[error] 	at dotty.tools.dotc.Run.runPhases$1(Run.scala:337)
[error] 	at dotty.tools.dotc.Run.compileUnits$$anonfun$1(Run.scala:348)
[error] 	at dotty.tools.dotc.Run.compileUnits$$anonfun$adapted$1(Run.scala:357)
[error] 	at dotty.tools.dotc.util.Stats$.maybeMonitored(Stats.scala:71)
[error] 	at dotty.tools.dotc.Run.compileUnits(Run.scala:357)
[error] 	at dotty.tools.dotc.Run.compileSources(Run.scala:261)
[error] 	at dotty.tools.dotc.Run.compile(Run.scala:246)
[error] 	at dotty.tools.dotc.Driver.doCompile(Driver.scala:37)
[error] 	at dotty.tools.xsbt.CompilerBridgeDriver.run(CompilerBridgeDriver.java:141)
[error] 	at dotty.tools.xsbt.CompilerBridge.run(CompilerBridge.java:22)
[error] 	at sbt.internal.inc.AnalyzingCompiler.compile(AnalyzingCompiler.scala:91)
[error] 	at sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$7(MixedAnalyzingCompiler.scala:193)
[error] 	at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
[error] 	at sbt.internal.inc.MixedAnalyzingCompiler.timed(MixedAnalyzingCompiler.scala:248)
[error] 	at sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$4(MixedAnalyzingCompiler.scala:183)
[error] 	at sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$4$adapted(MixedAnalyzingCompiler.scala:163)
[error] 	at sbt.internal.inc.JarUtils$.withPreviousJar(JarUtils.scala:239)
[error] 	at sbt.internal.inc.MixedAnalyzingCompiler.compileScala$1(MixedAnalyzingCompiler.scala:163)
[error] 	at sbt.internal.inc.MixedAnalyzingCompiler.compile(MixedAnalyzingCompiler.scala:211)
[error] 	at sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1(IncrementalCompilerImpl.scala:534)
[error] 	at sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1$adapted(IncrementalCompilerImpl.scala:534)
[error] 	at sbt.internal.inc.Incremental$.$anonfun$apply$5(Incremental.scala:180)
[error] 	at sbt.internal.inc.Incremental$.$anonfun$apply$5$adapted(Incremental.scala:178)
[error] 	at sbt.internal.inc.Incremental$$anon$2.run(Incremental.scala:464)
[error] 	at sbt.internal.inc.IncrementalCommon$CycleState.next(IncrementalCommon.scala:116)
[error] 	at sbt.internal.inc.IncrementalCommon$$anon$1.next(IncrementalCommon.scala:56)
[error] 	at sbt.internal.inc.IncrementalCommon$$anon$1.next(IncrementalCommon.scala:52)
[error] 	at sbt.internal.inc.IncrementalCommon.cycle(IncrementalCommon.scala:263)
[error] 	at sbt.internal.inc.Incremental$.$anonfun$incrementalCompile$8(Incremental.scala:419)
[error] 	at sbt.internal.inc.Incremental$.withClassfileManager(Incremental.scala:506)
[error] 	at sbt.internal.inc.Incremental$.incrementalCompile(Incremental.scala:406)
[error] 	at sbt.internal.inc.Incremental$.apply(Incremental.scala:172)
[error] 	at sbt.internal.inc.IncrementalCompilerImpl.compileInternal(IncrementalCompilerImpl.scala:534)
[error] 	at sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileIncrementally$1(IncrementalCompilerImpl.scala:488)
[error] 	at sbt.internal.inc.IncrementalCompilerImpl.handleCompilationError(IncrementalCompilerImpl.scala:332)
[error] 	at sbt.internal.inc.IncrementalCompilerImpl.compileIncrementally(IncrementalCompilerImpl.scala:425)
[error] 	at sbt.internal.inc.IncrementalCompilerImpl.compile(IncrementalCompilerImpl.scala:137)
[error] 	at sbt.Defaults$.compileIncrementalTaskImpl(Defaults.scala:2371)
[error] 	at sbt.Defaults$.$anonfun$compileIncrementalTask$2(Defaults.scala:2321)
[error] 	at sbt.internal.server.BspCompileTask$.$anonfun$compute$1(BspCompileTask.scala:31)
[error] 	at sbt.internal.io.Retry$.apply(Retry.scala:47)
[error] 	at sbt.internal.io.Retry$.apply(Retry.scala:29)
[error] 	at sbt.internal.io.Retry$.apply(Retry.scala:24)
[error] 	at sbt.internal.server.BspCompileTask$.compute(BspCompileTask.scala:31)
[error] 	at sbt.Defaults$.$anonfun$compileIncrementalTask$1(Defaults.scala:2319)
[error] 	at scala.Function1.$anonfun$compose$1(Function1.scala:49)
[error] 	at sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:63)
[error] 	at sbt.std.Transform$$anon$4.work(Transform.scala:69)
[error] 	at sbt.Execute.$anonfun$submit$2(Execute.scala:283)
[error] 	at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:24)
[error] 	at sbt.Execute.work(Execute.scala:292)
[error] 	at sbt.Execute.$anonfun$submit$1(Execute.scala:283)
[error] 	at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:265)
[error] 	at sbt.CompletionService$$anon$2.call(CompletionService.scala:65)
[error] 	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
[error] 	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572)
[error] 	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
[error] 	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
[error] 	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
[error] 	at java.base/java.lang.Thread.run(Thread.java:1583)
[error] (Compile / compileIncremental) dotty.tools.dotc.cc.IllegalCaptureRef: TermRef(TypeRef(ThisType(TypeRef(NoPrefix,module class <empty>)),class Page),val nw)
[error] Total time: 1 s, completed Apr 8, 2024, 5:14:03 PM
@willcrichton willcrichton added itype:bug itype:crash stat:needs triage Every issue needs to have an "area" and "itype" label labels Apr 9, 2024
@Gedochao
Copy link
Contributor

Gedochao commented Apr 10, 2024

Full crash output with 3.4.1:

 unhandled exception while running cc on /Users/pchabelski/IdeaProjects/scala-cli-tests/compiler-repro/repro.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 -Yno-enrich-error-messages.

     while compiling: /Users/pchabelski/IdeaProjects/scala-cli-tests/compiler-repro/repro.scala
        during phase: cc
                mode: Mode(ImplicitsEnabled)
     library version: version 2.13.12
    compiler version: version 3.4.1
            settings: -classpath /Users/pchabelski/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala3-library_3/3.4.1/scala3-library_3-3.4.1.jar:/Users/pchabelski/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.12/scala-library-2.13.12.jar -d /Users/pchabelski/IdeaProjects/scala-cli-tests/compiler-repro/.scala-build/compiler-repro_853f6d1dbb-28ebf8438e/classes/main -java-output-version 17 -sourceroot /Users/pchabelski/IdeaProjects/scala-cli-tests/compiler-repro

Exception in thread "main" dotty.tools.dotc.cc.IllegalCaptureRef: TermRef(TypeRef(ThisType(TypeRef(NoPrefix,module class <empty>)),class Page),val nw)
        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.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.transformResultType(Setup.scala:377)
        at dotty.tools.dotc.cc.Setup$$anon$5.traverse(Setup.scala:404)
        at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.recur$3(tpd.scala:1300)
        at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1303)
        at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1295)
        at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverse(Trees.scala:1795)
        at dotty.tools.dotc.cc.Setup$$anon$5.traverse$$anonfun$1(Setup.scala:395)
        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.cc.Setup$$anon$5.traverse(Setup.scala:395)
        at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.recur$3(tpd.scala:1300)
        at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1303)
        at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1295)
        at dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.foldOver(Trees.scala:1693)
        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.ast.tpd$TreeTraverserWithPreciseImportContexts.recur$3(tpd.scala:1300)
        at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1303)
        at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1295)
        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.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1796)
        at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1796)
        at dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.foldOver(Trees.scala:1693)
        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:1300)
        at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1303)
        at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1295)
        at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverse(Trees.scala:1795)
        at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.recur$3(tpd.scala:1301)
        at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1303)
        at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1295)
        at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverse(Trees.scala:1795)
        at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.recur$3(tpd.scala:1301)
        at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1303)
        at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1295)
        at dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.foldOver(Trees.scala:1755)
        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.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1796)
        at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1796)
        at dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.foldOver(Trees.scala:1752)
        at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverseChildren(Trees.scala:1797)
        at dotty.tools.dotc.cc.Setup$$anon$5.traverse(Setup.scala:415)
        at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.recur$3(tpd.scala:1300)
        at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1303)
        at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1295)
        at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverse(Trees.scala:1795)
        at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.recur$3(tpd.scala:1301)
        at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1303)
        at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1295)
        at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverse(Trees.scala:1795)
        at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.recur$3(tpd.scala:1301)
        at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1303)
        at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1295)
        at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverse(Trees.scala:1795)
        at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.recur$3(tpd.scala:1301)
        at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1303)
        at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1295)
        at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverse(Trees.scala:1795)
        at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.recur$3(tpd.scala:1298)
        at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1303)
        at dotty.tools.dotc.ast.tpd$TreeTraverserWithPreciseImportContexts.apply(tpd.scala:1295)
        at dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.foldOver(Trees.scala:1761)
        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.setupUnit(Setup.scala:667)
        at dotty.tools.dotc.cc.CheckCaptures$CaptureChecker.checkUnit(CheckCaptures.scala:1156)
        at dotty.tools.dotc.transform.Recheck.run(Recheck.scala:167)
        at dotty.tools.dotc.cc.CheckCaptures.run(CheckCaptures.scala:203)
        at dotty.tools.dotc.core.Phases$Phase.runOn$$anonfun$1(Phases.scala:354)
        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.core.Phases$Phase.runOn(Phases.scala:360)
        at dotty.tools.dotc.transform.Recheck.runOn(Recheck.scala:171)
        at dotty.tools.dotc.Run.runPhases$1$$anonfun$1(Run.scala:315)
        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:1323)
        at dotty.tools.dotc.Run.runPhases$1(Run.scala:337)
        at dotty.tools.dotc.Run.compileUnits$$anonfun$1(Run.scala:350)
        at dotty.tools.dotc.Run.compileUnits$$anonfun$adapted$1(Run.scala:360)
        at dotty.tools.dotc.util.Stats$.maybeMonitored(Stats.scala:69)
        at dotty.tools.dotc.Run.compileUnits(Run.scala:360)
        at dotty.tools.dotc.Run.compileSources(Run.scala:261)
        at dotty.tools.dotc.Run.compile(Run.scala:246)
        at dotty.tools.dotc.Driver.doCompile(Driver.scala:37)
        at dotty.tools.dotc.Driver.process(Driver.scala:196)
        at dotty.tools.dotc.Driver.process(Driver.scala:164)
        at dotty.tools.dotc.Driver.process(Driver.scala:176)
        at dotty.tools.dotc.Driver.main(Driver.scala:206)
        at dotty.tools.dotc.Main.main(Main.scala)
Compilation failed

@Gedochao Gedochao added area:experimental:cc Capture checking related and removed stat:needs triage Every issue needs to have an "area" and "itype" label labels Apr 10, 2024
@odersky
Copy link
Contributor

odersky commented Apr 10, 2024

There something wrong with how the context function type is expanded at Typer. I'm looking into it. Workaround: Replace last line with

page.render(client ?=> ())

@odersky odersky self-assigned this Apr 10, 2024
odersky added a commit to dotty-staging/dotty that referenced this issue Apr 10, 2024
…rees

A non-sensical capture reference appeared in the type of a synthesized context function
literal. We do clean out @retains annotations that can contain such references, but only
for inferred type trees. The problem was that context function parameters were treated
like explicitly given types before.

Fixes scala#20135
odersky added a commit that referenced this issue Apr 11, 2024
A non-sensical capture reference appeared in the type of a synthesized
context function literal. We do clean out @retains annotations that can
contain such references, but only for inferred type trees. The problem
was that context function parameters were treated like explicitly given
types before.

Fixes #20135
@Kordyjan Kordyjan added this to the 3.5.0 milestone May 10, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants