Compiler version
Scala 3.8.3
Minimized code
class C(a: Any)
def compilerThrows(): Unit =
val a2 = new Object
new :
class S extends C(a2)
// compiler crashes
new S{}
// Similar cases that do not crash:
val outsideA = new Object
def noThrow(): Unit =
val a2 = new Object
// no crash
val _ =
class S extends C(a2)
new S {}
new :
class S extends C(a2)
// no crash
class S_outsideA extends C(outsideA)
new S_outsideA {}
// no crash
new C(a2) {}
Output (click arrow to expand)
Details
unhandled exception while running MegaPhase{lambdaLift, elimStaticThis, countOuterAccesses} on .\src\main\scala\compilerThrows.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: .\src\main\scala\compilerThrows.scala
during phase: MegaPhase{lambdaLift, elimStaticThis, countOuterAccesses}
mode: Mode(ImplicitsEnabled)
library version: version 3.8.3
compiler version: version 3.8.3
settings:
Exception in thread "main" java.lang.IllegalArgumentException: Could not find proxy for val a2: Object in [value a2,
method compilerThrows, the top-level definitions in package <empty>, package <empty>, package <root>], encl =
constructor $anon, owners = constructor $anon, anonymous class S {...}, constructor $anon, anonymous class Object
{...}, method compilerThrows, the top-level definitions in package <empty>, package <empty>, package <root>;
enclosures = constructor $anon, anonymous class S {...}, package <empty>, package <root>
at dotty.tools.dotc.transform.LambdaLift$Lifter.searchIn$1(LambdaLift.scala:147)
at dotty.tools.dotc.transform.LambdaLift$Lifter.proxy(LambdaLift.scala:160)
at dotty.tools.dotc.transform.LambdaLift$Lifter.proxyRef(LambdaLift.scala:178)
at dotty.tools.dotc.transform.LambdaLift$Lifter.addFreeArgs$$anonfun$1(LambdaLift.scala:184)
at scala.collection.immutable.List.map(List.scala:240)
at dotty.tools.dotc.transform.LambdaLift$Lifter.addFreeArgs(LambdaLift.scala:184)
at dotty.tools.dotc.transform.LambdaLift.transformApply(LambdaLift.scala:320)
at dotty.tools.dotc.transform.LambdaLift.transformApply(LambdaLift.scala:319)
at dotty.tools.dotc.transform.MegaPhase.goApply(MegaPhase.scala:681)
at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:297)
at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
at dotty.tools.dotc.transform.MegaPhase.loop$2(MegaPhase.scala:471)
at dotty.tools.dotc.transform.MegaPhase.transformBlock(MegaPhase.scala:476)
at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:315)
at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
at dotty.tools.dotc.transform.MegaPhase.mapDefDef$1(MegaPhase.scala:265)
at dotty.tools.dotc.transform.MegaPhase.transformNamed$1(MegaPhase.scala:268)
at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:452)
at dotty.tools.dotc.transform.MegaPhase.transformSpecificTree(MegaPhase.scala:461)
at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:373)
at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
at dotty.tools.dotc.transform.MegaPhase.transformNamed$1(MegaPhase.scala:272)
at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:452)
at dotty.tools.dotc.transform.MegaPhase.loop$2(MegaPhase.scala:471)
at dotty.tools.dotc.transform.MegaPhase.transformBlock(MegaPhase.scala:476)
at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:315)
at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
at dotty.tools.dotc.transform.MegaPhase.loop$2(MegaPhase.scala:471)
at dotty.tools.dotc.transform.MegaPhase.transformBlock(MegaPhase.scala:476)
at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:315)
at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
at dotty.tools.dotc.transform.MegaPhase.mapDefDef$1(MegaPhase.scala:265)
at dotty.tools.dotc.transform.MegaPhase.transformNamed$1(MegaPhase.scala:268)
at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:452)
at dotty.tools.dotc.transform.MegaPhase.transformSpecificTree(MegaPhase.scala:461)
at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:373)
at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
at dotty.tools.dotc.transform.MegaPhase.transformNamed$1(MegaPhase.scala:272)
at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:452)
at dotty.tools.dotc.transform.MegaPhase.loop$2(MegaPhase.scala:471)
at dotty.tools.dotc.transform.MegaPhase.transformBlock(MegaPhase.scala:476)
at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:315)
at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
at dotty.tools.dotc.transform.MegaPhase.loop$2$$anonfun$1(MegaPhase.scala:474)
at dotty.tools.dotc.transform.MegaPhase.loop$2(MegaPhase.scala:476)
at dotty.tools.dotc.transform.MegaPhase.transformBlock(MegaPhase.scala:476)
at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:315)
at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
at dotty.tools.dotc.transform.MegaPhase.mapDefDef$1(MegaPhase.scala:265)
at dotty.tools.dotc.transform.MegaPhase.transformNamed$1(MegaPhase.scala:268)
at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:452)
at dotty.tools.dotc.transform.MegaPhase.loop$1(MegaPhase.scala:465)
at dotty.tools.dotc.transform.MegaPhase.transformStats(MegaPhase.scala:465)
at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:376)
at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
at dotty.tools.dotc.transform.MegaPhase.transformNamed$1(MegaPhase.scala:272)
at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:452)
at dotty.tools.dotc.transform.MegaPhase.loop$1(MegaPhase.scala:465)
at dotty.tools.dotc.transform.MegaPhase.transformStats(MegaPhase.scala:465)
at dotty.tools.dotc.transform.MegaPhase.mapPackage$1(MegaPhase.scala:396)
at dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:399)
at dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:454)
at dotty.tools.dotc.transform.MegaPhase.transformUnit(MegaPhase.scala:481)
at dotty.tools.dotc.transform.MegaPhase.run(MegaPhase.scala:493)
at dotty.tools.dotc.core.Phases$Phase.runOn$$anonfun$1(Phases.scala:406)
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:327)
at dotty.tools.dotc.core.Phases$Phase.runOn(Phases.scala:399)
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:1324)
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:42)
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:212)
at dotty.tools.dotc.Driver.process(Driver.scala:180)
at dotty.tools.dotc.Driver.process(Driver.scala:192)
at dotty.tools.dotc.Driver.main(Driver.scala:222)
at dotty.tools.MainGenericCompiler$.main(MainGenericCompiler.scala:122)
at dotty.tools.MainGenericCompiler.main(MainGenericCompiler.scala)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at coursier.bootstrap.launcher.a.a(Unknown Source)
at coursier.bootstrap.launcher.Launcher.main(Unknown Source)
Compiler version
Scala 3.8.3
Minimized code
Output (click arrow to expand)
Details