Skip to content

Assertion failure in TypeErasure#sigName: "no sig for MethodType" #15649

Closed
@griggt

Description

@griggt

Minimized from the community-build failure of zio/zio-config reported in #15647

Compiler version

3.2.0-RC2
Works on 3.1.3
Fails on 3.2.0-RC1
Fails on 3.2.1-RC1-bin-20220710-794e7c9-NIGHTLY

Minimized code

trait ConfigSourceModule:
  object ConfigSource:
    class R

object M extends ConfigSourceModule

object Foo:
  implicit class FromConfigSource(c: M.ConfigSource.type)

object FooBar:                                      // problem disappears if we rename as `Bar`
  def foo: M.ConfigSource.R = new M.ConfigSource.R  // problem disappears if we use `???` as rhs

Output (click arrow to expand)

java.lang.AssertionError: assertion failed: MethodType(List(), List(), TypeRef(ThisType(TypeRef(ThisType(TypeRef(NoPrefix,module class <empty>)),trait ConfigSourceModule)),module class ConfigSource$))
	at scala.runtime.Scala3RunTime$.assertFailed(Scala3RunTime.scala:8)
	at dotty.tools.dotc.core.TypeErasure.dotty$tools$dotc$core$TypeErasure$$sigName(TypeErasure.scala:851)
	at dotty.tools.dotc.core.TypeErasure$.sigName(TypeErasure.scala:204)
	at dotty.tools.dotc.core.Signature.$anonfun$2(Signature.scala:111)
	at scala.collection.immutable.List.map(List.scala:246)
	at dotty.tools.dotc.core.Signature.prependTermParams(Signature.scala:111)
	at dotty.tools.dotc.core.Types$MethodOrPoly.computeSignature$2(Types.scala:3560)
	at dotty.tools.dotc.core.Types$MethodOrPoly.signature(Types.scala:3577)
	at dotty.tools.dotc.core.Types$MethodOrPoly.signature(Types.scala:3587)
	at dotty.tools.dotc.core.TypeComparer.compareMethod$1(TypeComparer.scala:703)
	at dotty.tools.dotc.core.TypeComparer.thirdTry$1(TypeComparer.scala:709)
	at dotty.tools.dotc.core.TypeComparer.secondTry$1(TypeComparer.scala:506)
	at dotty.tools.dotc.core.TypeComparer.firstTry$1(TypeComparer.scala:383)
	at dotty.tools.dotc.core.TypeComparer.recur(TypeComparer.scala:1336)
	at dotty.tools.dotc.core.TypeComparer.isSubType(TypeComparer.scala:194)
	at dotty.tools.dotc.core.TypeComparer.isSubType(TypeComparer.scala:204)
	at dotty.tools.dotc.core.TypeComparer.isSameType(TypeComparer.scala:2019)
	at dotty.tools.dotc.core.TypeComparer$.isSameType(TypeComparer.scala:2761)
	at dotty.tools.dotc.core.Types$Type.$eq$colon$eq(Types.scala:1056)
	at dotty.tools.backend.jvm.BCodeHelpers.dotty$tools$backend$jvm$BCodeHelpers$$getStaticForwarderGenericSignature(BCodeHelpers.scala:920)
	at dotty.tools.backend.jvm.BCodeHelpers$BCForwardersGen.addForwarder(BCodeHelpers.scala:514)
	at dotty.tools.backend.jvm.BCodeHelpers$BCForwardersGen.addForwarders$$anonfun$3(BCodeHelpers.scala:594)
	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.BCodeHelpers$BCForwardersGen.addForwarders(BCodeHelpers.scala:596)
	at dotty.tools.backend.jvm.BCodeHelpers$BCForwardersGen.addForwarders$(BCodeHelpers.scala:490)
	at dotty.tools.backend.jvm.BCodeHelpers$JCommonBuilder.addForwarders(BCodeHelpers.scala:654)
	at dotty.tools.backend.jvm.BCodeHelpers$JMirrorBuilder.genMirrorClass(BCodeHelpers.scala:701)
	at dotty.tools.backend.jvm.GenBCodePipeline$Worker1.visit(GenBCode.scala:257)
	at dotty.tools.backend.jvm.GenBCodePipeline$Worker1.run(GenBCode.scala:231)
	at dotty.tools.backend.jvm.GenBCodePipeline.buildAndSendToDisk(GenBCode.scala:598)
	at dotty.tools.backend.jvm.GenBCodePipeline.run(GenBCode.scala:564)
	at dotty.tools.backend.jvm.GenBCode.run(GenBCode.scala:69)
	at dotty.tools.dotc.core.Phases$Phase.runOn$$anonfun$1(Phases.scala:311)
	at scala.collection.immutable.List.map(List.scala:246)
	at dotty.tools.dotc.core.Phases$Phase.runOn(Phases.scala:312)
	at dotty.tools.backend.jvm.GenBCode.runOn(GenBCode.scala:77)
	at dotty.tools.dotc.Run.runPhases$1$$anonfun$1(Run.scala:234)
	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:1328)
	at dotty.tools.dotc.Run.runPhases$1(Run.scala:245)
	at dotty.tools.dotc.Run.compileUnits$$anonfun$1(Run.scala:253)
	at dotty.tools.dotc.Run.compileUnits$$anonfun$adapted$1(Run.scala:262)
	at dotty.tools.dotc.util.Stats$.maybeMonitored(Stats.scala:68)
	at dotty.tools.dotc.Run.compileUnits(Run.scala:262)
	at dotty.tools.dotc.Run.compileSources(Run.scala:186)
	at dotty.tools.dotc.Run.compile(Run.scala:170)
	at dotty.tools.dotc.Driver.doCompile(Driver.scala:35)
	at dotty.tools.dotc.Driver.process(Driver.scala:195)
	at dotty.tools.dotc.Driver.process(Driver.scala:163)
	at dotty.tools.dotc.Driver.process(Driver.scala:175)
	at dotty.tools.dotc.Driver.main(Driver.scala:205)
	at dotty.tools.dotc.Main.main(Main.scala)
no sig for MethodType(List(), List(), TypeRef(ThisType(TypeRef(ThisType(TypeRef(NoPrefix,module class <empty>)),trait ConfigSourceModule)),module class ConfigSource$)) because of ()
assertion failure for (c(): ConfigSourceModule.this.ConfigSource): Foo.FromConfigSource <:< (c: ConfigSourceModule.this.ConfigSource): Foo.FromConfigSource, frozen = false
Error while emitting ConfigSourceModule.scala
exception occurred while compiling ConfigSourceModule.scala
java.lang.AssertionError: assertion failed: MethodType(List(), List(), TypeRef(ThisType(TypeRef(ThisType(TypeRef(NoPrefix,module class <empty>)),trait ConfigSourceModule)),module class ConfigSource$)) while compiling ConfigSourceModule.scala
Exception in thread "main" java.lang.AssertionError: assertion failed: MethodType(List(), List(), TypeRef(ThisType(TypeRef(ThisType(TypeRef(NoPrefix,module class <empty>)),trait ConfigSourceModule)),module class ConfigSource$))
	at scala.runtime.Scala3RunTime$.assertFailed(Scala3RunTime.scala:8)
	at dotty.tools.dotc.core.TypeErasure.dotty$tools$dotc$core$TypeErasure$$sigName(TypeErasure.scala:851)
	at dotty.tools.dotc.core.TypeErasure$.sigName(TypeErasure.scala:204)
	at dotty.tools.dotc.core.Signature.$anonfun$2(Signature.scala:111)
	at scala.collection.immutable.List.map(List.scala:246)
	at dotty.tools.dotc.core.Signature.prependTermParams(Signature.scala:111)
	at dotty.tools.dotc.core.Types$MethodOrPoly.computeSignature$2(Types.scala:3560)
	at dotty.tools.dotc.core.Types$MethodOrPoly.signature(Types.scala:3577)
	at dotty.tools.dotc.core.Types$MethodOrPoly.signature(Types.scala:3587)
	at dotty.tools.dotc.core.TypeComparer.compareMethod$1(TypeComparer.scala:703)
	at dotty.tools.dotc.core.TypeComparer.thirdTry$1(TypeComparer.scala:709)
	at dotty.tools.dotc.core.TypeComparer.secondTry$1(TypeComparer.scala:506)
	at dotty.tools.dotc.core.TypeComparer.firstTry$1(TypeComparer.scala:383)
	at dotty.tools.dotc.core.TypeComparer.recur(TypeComparer.scala:1336)
	at dotty.tools.dotc.core.TypeComparer.isSubType(TypeComparer.scala:194)
	at dotty.tools.dotc.core.TypeComparer.isSubType(TypeComparer.scala:204)
	at dotty.tools.dotc.core.TypeComparer.isSameType(TypeComparer.scala:2019)
	at dotty.tools.dotc.core.TypeComparer$.isSameType(TypeComparer.scala:2761)
	at dotty.tools.dotc.core.Types$Type.$eq$colon$eq(Types.scala:1056)
	at dotty.tools.backend.jvm.BCodeHelpers.dotty$tools$backend$jvm$BCodeHelpers$$getStaticForwarderGenericSignature(BCodeHelpers.scala:920)
	at dotty.tools.backend.jvm.BCodeHelpers$BCForwardersGen.addForwarder(BCodeHelpers.scala:514)
	at dotty.tools.backend.jvm.BCodeHelpers$BCForwardersGen.addForwarders$$anonfun$3(BCodeHelpers.scala:594)
	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.BCodeHelpers$BCForwardersGen.addForwarders(BCodeHelpers.scala:596)
	at dotty.tools.backend.jvm.BCodeHelpers$BCForwardersGen.addForwarders$(BCodeHelpers.scala:490)
	at dotty.tools.backend.jvm.BCodeHelpers$JCommonBuilder.addForwarders(BCodeHelpers.scala:654)
	at dotty.tools.backend.jvm.BCodeHelpers$JMirrorBuilder.genMirrorClass(BCodeHelpers.scala:701)
	at dotty.tools.backend.jvm.GenBCodePipeline$Worker1.visit(GenBCode.scala:257)
	at dotty.tools.backend.jvm.GenBCodePipeline$Worker1.run(GenBCode.scala:231)
	at dotty.tools.backend.jvm.GenBCodePipeline.buildAndSendToDisk(GenBCode.scala:598)
	at dotty.tools.backend.jvm.GenBCodePipeline.run(GenBCode.scala:564)
	at dotty.tools.backend.jvm.GenBCode.run(GenBCode.scala:69)
	at dotty.tools.dotc.core.Phases$Phase.runOn$$anonfun$1(Phases.scala:311)
	at scala.collection.immutable.List.map(List.scala:246)
	at dotty.tools.dotc.core.Phases$Phase.runOn(Phases.scala:312)
	at dotty.tools.backend.jvm.GenBCode.runOn(GenBCode.scala:77)
	at dotty.tools.dotc.Run.runPhases$1$$anonfun$1(Run.scala:234)
	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:1328)
	at dotty.tools.dotc.Run.runPhases$1(Run.scala:245)
	at dotty.tools.dotc.Run.compileUnits$$anonfun$1(Run.scala:253)
	at dotty.tools.dotc.Run.compileUnits$$anonfun$adapted$1(Run.scala:262)
	at dotty.tools.dotc.util.Stats$.maybeMonitored(Stats.scala:68)
	at dotty.tools.dotc.Run.compileUnits(Run.scala:262)
	at dotty.tools.dotc.Run.compileSources(Run.scala:186)
	at dotty.tools.dotc.Run.compile(Run.scala:170)
	at dotty.tools.dotc.Driver.doCompile(Driver.scala:35)
	at dotty.tools.dotc.Driver.process(Driver.scala:195)
	at dotty.tools.dotc.Driver.process(Driver.scala:163)
	at dotty.tools.dotc.Driver.process(Driver.scala:175)
	at dotty.tools.dotc.Driver.main(Driver.scala:205)
	at dotty.tools.dotc.Main.main(Main.scala)

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions