Skip to content

Backend triggers assertion in assertClassNotArray #461

@smarter

Description

@smarter

The following code:

package foo
object Foo {
}                                                                                                                                   

Results in an assertion error:

java.lang.AssertionError: assertion failed: val <none>
        at scala.Predef$.assert(Predef.scala:165)
        at scala.tools.nsc.backend.jvm.BCodeHelpers$BCInnerClassGen$class.assertClassNotArray(BCodeHelpers.scala:214)
        at scala.tools.nsc.backend.jvm.BCodeHelpers$BCInnerClassGen$class.assertClassNotArrayNotPrimitive(BCodeHelpers.scala:219)
        at scala.tools.nsc.backend.jvm.BCodeHelpers$BCInnerClassGen$class.getClassBTypeAndRegisterInnerClass(BCodeHelpers.scala:238)
        at scala.tools.nsc.backend.jvm.BCodeHelpers$JCommonBuilder.getClassBTypeAndRegisterInnerClass(BCodeHelpers.scala:469)
        at scala.tools.nsc.backend.jvm.BCodeHelpers$BCInnerClassGen$class.internalName(BCodeHelpers.scala:210)
        at scala.tools.nsc.backend.jvm.BCodeHelpers$JCommonBuilder.internalName(BCodeHelpers.scala:469)
        at scala.tools.nsc.backend.jvm.BCodeHelpers$JMirrorBuilder.genMirrorClass(BCodeHelpers.scala:494)
        at dotty.tools.backend.jvm.GenBCodePipeline$Worker1.visit(GenBCode.scala:164)
        at dotty.tools.backend.jvm.GenBCodePipeline$Worker1.run(GenBCode.scala:126)
        at dotty.tools.backend.jvm.GenBCodePipeline.buildAndSendToDisk(GenBCode.scala:320)
        at dotty.tools.backend.jvm.GenBCodePipeline.run(GenBCode.scala:289)
        at dotty.tools.backend.jvm.GenBCode.run(GenBCode.scala:40)
        at dotty.tools.dotc.core.Phases$Phase$$anonfun$runOn$1.apply(Phases.scala:266)
        at dotty.tools.dotc.core.Phases$Phase$$anonfun$runOn$1.apply(Phases.scala:264)
        at scala.collection.immutable.List.map(List.scala:273)
        at dotty.tools.dotc.core.Phases$Phase$class.runOn(Phases.scala:264)
        at dotty.tools.backend.jvm.GenBCode.runOn(GenBCode.scala:33)
        at dotty.tools.dotc.Run$$anonfun$compileSources$1$$anonfun$apply$mcV$sp$3.apply(Run.scala:50)
        at dotty.tools.dotc.Run$$anonfun$compileSources$1$$anonfun$apply$mcV$sp$3.apply(Run.scala:47)
        at scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:33)
        at scala.collection.mutable.ArrayOps$ofRef.foreach(ArrayOps.scala:186)
        at dotty.tools.dotc.Run$$anonfun$compileSources$1.apply$mcV$sp(Run.scala:47)
        at dotty.tools.dotc.Run$$anonfun$compileSources$1.apply(Run.scala:42)
        at dotty.tools.dotc.Run$$anonfun$compileSources$1.apply(Run.scala:42)
        at dotty.tools.dotc.util.Stats$.monitorHeartBeat(Stats.scala:68)
        at dotty.tools.dotc.Run.compileSources(Run.scala:41)
        at dotty.tools.dotc.Run.compile(Run.scala:32)
        at dotty.tools.dotc.Driver.doCompile(Driver.scala:20)
        at dotty.tools.dotc.Main$.doCompile(Main.scala:26)
        at dotty.tools.dotc.Driver.process(Driver.scala:31)
        at dotty.tools.dotc.Driver.main(Driver.scala:40)
        at dotty.tools.dotc.Main.main(Main.scala)
error: Error while emitting packobj.scala
assertion failed: val <none>
one error found

A quick bisection search shows that this started happening when #436 was merged.
Assigned to @DarkDimius .

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions