Skip to content

-Xgen-mixin-forwarders crashes for default methods #210

Closed
@lrytz

Description

@lrytz
trait O[T] extends java.util.Comparator[T] // Comparator has a method `default Comparator<T> reversed`

class C extends O[String] {
  def compare(a: String, b: String) = 0
}

crashes the compiler with -Xgen-mixin-forwarders:

java.lang.AssertionError: assertion failed:
  cannot invokespecial java/util/Comparator.reversed, the interface is not a direct parent.

        at scala.tools.nsc.Global.assert(Global.scala:229)
        at scala.tools.nsc.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genCallMethod(BCodeBodyBuilder.scala:1089)
        at scala.tools.nsc.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genApply(BCodeBodyBuilder.scala:584)
        at scala.tools.nsc.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genLoad(BCodeBodyBuilder.scala:298)
        at scala.tools.nsc.backend.jvm.BCodeSkelBuilder$PlainSkelBuilder.emitNormalMethodBody$1(BCodeSkelBuilder.scala:604)
        at scala.tools.nsc.backend.jvm.BCodeSkelBuilder$PlainSkelBuilder.genDefDef(BCodeSkelBuilder.scala:636)

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions