Skip to content

Crash in backend in secondary constructor edge case #18927

Closed
@szymon-rd

Description

@szymon-rd

Compiler version

3.4.0-RC1-bin-20231113-0dfe593-NIGHTLY

Minimized code

Minimized code from tests/init/neg/secondary-ctor4 test:

class A

class B {
  val a = new A

  class C(i: Int) {
    def this() = {
      this(1)
      class Inner() {
        println(a)
      }
    }
  }
}

Output

Error: Error while emitting /Users/srodziewicz/Projects/dotty/.scala-build/dotty_3200b05eac-ff28374a87/src_generated/main/xd.scala
assertion failed: Cannot emit primitive conversion from Lxd$_$B$C; to Lxd$_$B;
java.lang.AssertionError: assertion failed: Cannot emit primitive conversion from LB$C; to LB;
        at scala.runtime.Scala3RunTime$.assertFailed(Scala3RunTime.scala:8)
        at dotty.tools.backend.jvm.BCodeIdiomatic$JCodeMethodN.emitT2T(BCodeIdiomatic.scala:268)
        at dotty.tools.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.adapt(BCodeBodyBuilder.scala:1117)
        at dotty.tools.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genAdaptAndSendToDest(BCodeBodyBuilder.scala:497)
        at dotty.tools.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genLoadTo(BCodeBodyBuilder.scala:492)
        at dotty.tools.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genLoad(BCodeBodyBuilder.scala:305)
        at dotty.tools.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genStat(BCodeBodyBuilder.scala:111)
        at dotty.tools.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genBlockTo$$anonfun$1(BCodeBodyBuilder.scala:1095)
        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.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genBlockTo(BCodeBodyBuilder.scala:1095)
        at dotty.tools.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genLoadTo(BCodeBodyBuilder.scala:459)
        at dotty.tools.backend.jvm.BCodeSkelBuilder$PlainSkelBuilder.emitNormalMethodBody$1(BCodeSkelBuilder.scala:893)
        at dotty.tools.backend.jvm.BCodeSkelBuilder$PlainSkelBuilder.genDefDef(BCodeSkelBuilder.scala:916)
  ...

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions