Skip to content

MatchError in SymDenotation.companionModule and AssertionError in ClassBType.info on opaque type in method or block #6287

Closed
@panacekcz

Description

@panacekcz

Code (method):

object O{
  def m() = {
    opaque type T = Int
    object T
  }
}

Output:

scala.MatchError: ClassInfo(NoPrefix, class O$T$1$, List(TypeRef(ThisType(TypeRef(NoPrefix,module class lang)),class Object), TypeRef(ThisType(TypeRef(NoPrefix,module class scala)),class Serializable))) (of class dotty.tools.dotc.core.Types$CachedClassInfo)
        at dotty.tools.dotc.core.SymDenotations$SymDenotation.companionModule(SymDenotations.scala:1008)
        at dotty.tools.dotc.core.SymDenotations$SymDenotation.linkedClass(SymDenotations.scala:1072)
        at dotty.tools.backend.jvm.DottyBackendInterface$$anon$8.linkedClass(DottyBackendInterface.scala:756)
        at dotty.tools.backend.jvm.DottyBackendInterface$$anon$8.linkedClass(DottyBackendInterface.scala:632)
        at dotty.tools.backend.jvm.BTypesFromSymbols.setClassInfo(BTypesFromSymbols.scala:111)
        at dotty.tools.backend.jvm.BTypesFromSymbols.$anonfun$classBTypeFromSymbol$4(BTypesFromSymbols.scala:59)
        at scala.collection.MapLike.getOrElse(MapLike.scala:131)
        at scala.collection.MapLike.getOrElse$(MapLike.scala:129)
        at scala.collection.AbstractMap.getOrElse(Map.scala:63)
        at dotty.tools.backend.jvm.BTypesFromSymbols.classBTypeFromSymbol(BTypesFromSymbols.scala:53)
        at dotty.tools.backend.jvm.BCodeHelpers$BCInnerClassGen.getClassBTypeAndRegisterInnerClass(BCodeHelpers.scala:238)
        at dotty.tools.backend.jvm.BCodeHelpers$BCInnerClassGen.getClassBTypeAndRegisterInnerClass$(BCodeHelpers.scala:232)
        at dotty.tools.backend.jvm.BCodeSkelBuilder$PlainSkelBuilder.getClassBTypeAndRegisterInnerClass(BCodeSkelBuilder.scala:43)
        at dotty.tools.backend.jvm.DottyBackendInterface$$anon$9.$anonfun$toTypeKind$3(DottyBackendInterface.scala:894)
        at scala.collection.MapLike.getOrElse(MapLike.scala:131)
        at scala.collection.MapLike.getOrElse$(MapLike.scala:129)
        at scala.collection.AbstractMap.getOrElse(Map.scala:63)
        at dotty.tools.backend.jvm.DottyBackendInterface$$anon$9.primitiveOrClassToBType$1(DottyBackendInterface.scala:894)
        at dotty.tools.backend.jvm.DottyBackendInterface$$anon$9.toTypeKind(DottyBackendInterface.scala:913)
        at dotty.tools.backend.jvm.BCodeHelpers$BCInnerClassGen.toTypeKind(BCodeHelpers.scala:267)
        at dotty.tools.backend.jvm.BCodeHelpers$BCInnerClassGen.toTypeKind$(BCodeHelpers.scala:267)
        at dotty.tools.backend.jvm.BCodeSkelBuilder$PlainSkelBuilder.toTypeKind(BCodeSkelBuilder.scala:43)
        at dotty.tools.backend.jvm.BCodeHelpers$BCInnerClassGen.asmMethodType(BCodeHelpers.scala:251)
        at dotty.tools.backend.jvm.BCodeHelpers$BCInnerClassGen.asmMethodType$(BCodeHelpers.scala:247)
        at dotty.tools.backend.jvm.BCodeSkelBuilder$PlainSkelBuilder.asmMethodType(BCodeSkelBuilder.scala:43)
        at dotty.tools.backend.jvm.BCodeSkelBuilder$PlainSkelBuilder.genDefDef(BCodeSkelBuilder.scala:547)
        at dotty.tools.backend.jvm.BCodeSkelBuilder$PlainSkelBuilder.gen(BCodeSkelBuilder.scala:501)
        at dotty.tools.backend.jvm.BCodeSkelBuilder$PlainSkelBuilder.$anonfun$gen$1(BCodeSkelBuilder.scala:503)
        at dotty.tools.backend.jvm.BCodeSkelBuilder$PlainSkelBuilder.$anonfun$gen$1$adapted(BCodeSkelBuilder.scala:503)
        at scala.collection.immutable.List.foreach(List.scala:392)
        at dotty.tools.backend.jvm.BCodeSkelBuilder$PlainSkelBuilder.gen(BCodeSkelBuilder.scala:503)
        at dotty.tools.backend.jvm.BCodeSkelBuilder$PlainSkelBuilder.genPlainClass(BCodeSkelBuilder.scala:109)
        at dotty.tools.backend.jvm.GenBCodePipeline$Worker1.visit(GenBCode.scala:213)
        at dotty.tools.backend.jvm.GenBCodePipeline$Worker1.run(GenBCode.scala:180)
        at dotty.tools.backend.jvm.GenBCodePipeline.buildAndSendToDisk(GenBCode.scala:510)
        at dotty.tools.backend.jvm.GenBCodePipeline.run(GenBCode.scala:476)
        at dotty.tools.backend.jvm.GenBCode.run(GenBCode.scala:54)
        at dotty.tools.dotc.core.Phases$Phase.$anonfun$runOn$1(Phases.scala:316)
        at scala.collection.immutable.List.map(List.scala:286)
        at dotty.tools.dotc.core.Phases$Phase.runOn(Phases.scala:314)
        at dotty.tools.backend.jvm.GenBCode.runOn(GenBCode.scala:59)
        at dotty.tools.dotc.Run.$anonfun$compileUnits$3(Run.scala:158)
        at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
        at dotty.tools.dotc.util.Stats$.trackTime(Stats.scala:49)
        at dotty.tools.dotc.Run.$anonfun$compileUnits$2(Run.scala:155)
        at dotty.tools.dotc.Run.$anonfun$compileUnits$2$adapted(Run.scala:153)
        at scala.collection.IndexedSeqOptimized.foreach(IndexedSeqOptimized.scala:36)
        at scala.collection.IndexedSeqOptimized.foreach$(IndexedSeqOptimized.scala:33)
        at scala.collection.mutable.ArrayOps$ofRef.foreach(ArrayOps.scala:198)
        at dotty.tools.dotc.Run.runPhases$1(Run.scala:153)
        at dotty.tools.dotc.Run.$anonfun$compileUnits$1(Run.scala:178)
        at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
        at dotty.tools.dotc.util.Stats$.maybeMonitored(Stats.scala:102)
        at dotty.tools.dotc.Run.compileUnits(Run.scala:133)
        at dotty.tools.dotc.Run.compileSources(Run.scala:120)
        at dotty.tools.dotc.Run.compile(Run.scala:104)
        at dotty.tools.dotc.Driver.doCompile(Driver.scala:33)
        at dotty.tools.dotc.Driver.process(Driver.scala:170)
        at dotty.tools.dotc.Driver.process(Driver.scala:139)
        at dotty.tools.dotc.Driver.process(Driver.scala:151)
        at dotty.tools.dotc.Driver.main(Driver.scala:178)
        at dotty.tools.dotc.Main.main(Main.scala)
Error while emitting opaque-meth.scala
ClassInfo(NoPrefix, class O$T$1$, List(TypeRef(ThisType(TypeRef(NoPrefix,module class lang)),class Object), TypeRef(ThisType(TypeRef(NoPrefix,module class scala)),class Serializable))) (of class dotty.tools.dotc.core.Types$CachedClassInfo)
java.lang.AssertionError: assertion failed: ClassBType.info not yet assigned: LO$T$1$;
        at scala.Predef$.assert(Predef.scala:223)
        at dotty.tools.backend.jvm.BTypes$ClassBType.info(BTypes.scala:590)
        at dotty.tools.backend.jvm.BTypes$ClassBType.isNestedClass(BTypes.scala:644)
        at dotty.tools.backend.jvm.BCodeHelpers$BCInnerClassGen.getClassBTypeAndRegisterInnerClass(BCodeHelpers.scala:239)
        at dotty.tools.backend.jvm.BCodeHelpers$BCInnerClassGen.getClassBTypeAndRegisterInnerClass$(BCodeHelpers.scala:232)
        at dotty.tools.backend.jvm.BCodeSkelBuilder$PlainSkelBuilder.getClassBTypeAndRegisterInnerClass(BCodeSkelBuilder.scala:43)
        at dotty.tools.backend.jvm.BCodeHelpers$BCInnerClassGen.internalName(BCodeHelpers.scala:205)
        at dotty.tools.backend.jvm.BCodeHelpers$BCInnerClassGen.internalName$(BCodeHelpers.scala:199)
        at dotty.tools.backend.jvm.BCodeSkelBuilder$PlainSkelBuilder.internalName(BCodeSkelBuilder.scala:43)
        at dotty.tools.backend.jvm.BCodeSkelBuilder$PlainSkelBuilder.genPlainClass(BCodeSkelBuilder.scala:89)
        at dotty.tools.backend.jvm.GenBCodePipeline$Worker1.visit(GenBCode.scala:213)
        at dotty.tools.backend.jvm.GenBCodePipeline$Worker1.run(GenBCode.scala:180)
        at dotty.tools.backend.jvm.GenBCodePipeline.buildAndSendToDisk(GenBCode.scala:510)
        at dotty.tools.backend.jvm.GenBCodePipeline.run(GenBCode.scala:476)
        at dotty.tools.backend.jvm.GenBCode.run(GenBCode.scala:54)
        at dotty.tools.dotc.core.Phases$Phase.$anonfun$runOn$1(Phases.scala:316)
        at scala.collection.immutable.List.map(List.scala:286)
        at dotty.tools.dotc.core.Phases$Phase.runOn(Phases.scala:314)
        at dotty.tools.backend.jvm.GenBCode.runOn(GenBCode.scala:59)
        at dotty.tools.dotc.Run.$anonfun$compileUnits$3(Run.scala:158)
        at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
        at dotty.tools.dotc.util.Stats$.trackTime(Stats.scala:49)
        at dotty.tools.dotc.Run.$anonfun$compileUnits$2(Run.scala:155)
        at dotty.tools.dotc.Run.$anonfun$compileUnits$2$adapted(Run.scala:153)
        at scala.collection.IndexedSeqOptimized.foreach(IndexedSeqOptimized.scala:36)
        at scala.collection.IndexedSeqOptimized.foreach$(IndexedSeqOptimized.scala:33)
        at scala.collection.mutable.ArrayOps$ofRef.foreach(ArrayOps.scala:198)
        at dotty.tools.dotc.Run.runPhases$1(Run.scala:153)
        at dotty.tools.dotc.Run.$anonfun$compileUnits$1(Run.scala:178)
        at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
        at dotty.tools.dotc.util.Stats$.maybeMonitored(Stats.scala:102)
        at dotty.tools.dotc.Run.compileUnits(Run.scala:133)
        at dotty.tools.dotc.Run.compileSources(Run.scala:120)
        at dotty.tools.dotc.Run.compile(Run.scala:104)
        at dotty.tools.dotc.Driver.doCompile(Driver.scala:33)
        at dotty.tools.dotc.Driver.process(Driver.scala:170)
        at dotty.tools.dotc.Driver.process(Driver.scala:139)
        at dotty.tools.dotc.Driver.process(Driver.scala:151)
        at dotty.tools.dotc.Driver.main(Driver.scala:178)
        at dotty.tools.dotc.Main.main(Main.scala)
Error while emitting opaque-meth.scala
assertion failed: ClassBType.info not yet assigned: LO$T$1$;
two errors found

Code (block):

object A {
  {
    opaque type T = Int
    object T
    println
  }
}

Output similar to case above.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions