Skip to content

Crash Failed to find environment for method <init> using -Ysafe-init-global #23739

@eejbyfeldt

Description

@eejbyfeldt

Compiler version

3.7.2

Minimized code

enum E { 
  case A extends E
}

Output (click arrow to expand)

  exception occurred while compiling List(safe-init-global-crash.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: <no file>
        during phase: parser
                mode: Mode(ImplicitsEnabled,ReadPositions)
     library version: version 2.13.16
    compiler version: version 3.7.2
            settings: -Ysafe-init-global true

Exception in thread "main" java.lang.AssertionError: assertion failed: Failed to find environment for method <init>!
	at scala.runtime.Scala3RunTime$.assertFailed(Scala3RunTime.scala:8)
	at dotty.tools.dotc.transform.init.Objects$Env$.resolveEnvByMethod(Objects.scala:524)
	at dotty.tools.dotc.transform.init.Objects.instantiate(Objects.scala:1141)
	at dotty.tools.dotc.transform.init.Objects.instantiate$$anonfun$3(Objects.scala:1147)
	at scala.collection.StrictOptimizedIterableOps.map(StrictOptimizedIterableOps.scala:100)
	at scala.collection.StrictOptimizedIterableOps.map$(StrictOptimizedIterableOps.scala:87)
	at scala.collection.immutable.Set$Set1.map(Set.scala:165)
	at dotty.tools.dotc.transform.init.Objects.instantiate(Objects.scala:1147)
	at dotty.tools.dotc.transform.init.Objects.$anonfun$19(Objects.scala:1317)
	at dotty.tools.dotc.transform.init.Objects.cases(Objects.scala:1315)
	at dotty.tools.dotc.transform.init.Objects.eval$$anonfun$1(Objects.scala:1282)
	at dotty.tools.dotc.transform.init.Objects$Cache$Data.$anonfun$7(Objects.scala:627)
	at dotty.tools.dotc.transform.init.Cache.cachedEval(Cache.scala:112)
	at dotty.tools.dotc.transform.init.Objects$Cache$Data.cachedEval(Objects.scala:626)
	at dotty.tools.dotc.transform.init.Objects.eval(Objects.scala:1282)
	at dotty.tools.dotc.transform.init.Objects.cases(Objects.scala:1394)
	at dotty.tools.dotc.transform.init.Objects.eval$$anonfun$1(Objects.scala:1282)
	at dotty.tools.dotc.transform.init.Objects$Cache$Data.$anonfun$7(Objects.scala:627)
	at dotty.tools.dotc.transform.init.Cache.cachedEval(Cache.scala:112)
	at dotty.tools.dotc.transform.init.Objects$Cache$Data.cachedEval(Objects.scala:626)
	at dotty.tools.dotc.transform.init.Objects.eval(Objects.scala:1282)
	at dotty.tools.dotc.transform.init.Objects.cases(Objects.scala:1428)
	at dotty.tools.dotc.transform.init.Objects.eval$$anonfun$1(Objects.scala:1282)
	at dotty.tools.dotc.transform.init.Objects$Cache$Data.$anonfun$7(Objects.scala:627)
	at dotty.tools.dotc.transform.init.Cache.cachedEval(Cache.scala:112)
	at dotty.tools.dotc.transform.init.Objects$Cache$Data.cachedEval(Objects.scala:626)
	at dotty.tools.dotc.transform.init.Objects.eval(Objects.scala:1282)
	at dotty.tools.dotc.transform.init.Objects.init$$anonfun$4(Objects.scala:1909)
	at scala.collection.immutable.List.foreach(List.scala:334)
	at dotty.tools.dotc.transform.init.Objects.init(Objects.scala:1906)
	at dotty.tools.dotc.transform.init.Objects$State$.iterate$1(Objects.scala:343)
	at dotty.tools.dotc.transform.init.Objects$State$.doCheckObject(Objects.scala:358)
	at dotty.tools.dotc.transform.init.Objects$State$.checkObjectAccess(Objects.scala:385)
	at dotty.tools.dotc.transform.init.Objects.accessObject(Objects.scala:1245)
	at dotty.tools.dotc.transform.init.Objects.checkClasses$$anonfun$2(Objects.scala:1259)
	at scala.collection.IterableOnceOps.foreach(IterableOnce.scala:619)
	at scala.collection.IterableOnceOps.foreach$(IterableOnce.scala:617)
	at scala.collection.AbstractIterable.foreach(Iterable.scala:935)
	at scala.collection.IterableOps$WithFilter.foreach(Iterable.scala:905)
	at dotty.tools.dotc.transform.init.Objects.checkClasses(Objects.scala:1257)
	at dotty.tools.dotc.transform.init.Checker.runOn$$anonfun$1(Checker.scala:58)
	at scala.runtime.function.JProcedure1.apply(JProcedure1.java:15)
	at scala.runtime.function.JProcedure1.apply(JProcedure1.java:10)
	at dotty.tools.dotc.core.Phases$Phase.cancellable(Phases.scala:528)
	at dotty.tools.dotc.transform.init.Checker.runOn(Checker.scala:59)
	at dotty.tools.dotc.Run.runPhases$1$$anonfun$1(Run.scala:368)
	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:361)
	at dotty.tools.dotc.Run.compileUnits$$anonfun$1$$anonfun$2(Run.scala:408)
	at dotty.tools.dotc.Run.compileUnits$$anonfun$1$$anonfun$adapted$1(Run.scala:408)
	at scala.Function0.apply$mcV$sp(Function0.scala:42)
	at dotty.tools.dotc.Run.showProgress(Run.scala:470)
	at dotty.tools.dotc.Run.compileUnits$$anonfun$1(Run.scala:408)
	at dotty.tools.dotc.Run.compileUnits$$anonfun$adapted$1(Run.scala:420)
	at dotty.tools.dotc.util.Stats$.maybeMonitored(Stats.scala:69)
	at dotty.tools.dotc.Run.compileUnits(Run.scala:420)
	at dotty.tools.dotc.Run.compileSources(Run.scala:307)
	at dotty.tools.dotc.Run.compile(Run.scala:292)
	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.MainGenericCompiler$.run$1(MainGenericCompiler.scala:160)
	at dotty.tools.MainGenericCompiler$.main(MainGenericCompiler.scala:184)
	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)

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions