Skip to content

AbstractMethodError due to RenameLifted renaming trait setter implementations #12759

@xuwei-k

Description

@xuwei-k

Compiler version

3.0.2-RC1-bin-20210609-fdbb94f-NIGHTLY, 3.0.1-RC1 and 3.0.0

Minimized code

package example

class A1
class A2
class A3

class TypeClass[A](val value: A)

object TypeClass {
  def apply[A](implicit a: TypeClass[A]): TypeClass[A] = a

  def get2[X1: TypeClass, X2: TypeClass]: (X1, X2) = {
    (TypeClass[X1].value, TypeClass[X2].value)
  }

  def get3[X1: TypeClass, X2: TypeClass, X3: TypeClass]: (X1, X2, X3) = {
    (TypeClass[X1].value, TypeClass[X2].value, TypeClass[X3].value)
  }

  implicit def a1: TypeClass[A1] = new TypeClass[A1](new A1)
  implicit def a2: TypeClass[A2] = new TypeClass[A2](new A2)
  implicit def a3: TypeClass[A3] = new TypeClass[A3](new A3)
}

trait Foo {

  val (a2, a3) = TypeClass.get2[A2, A3]

  val (x1, x2, x3) = TypeClass.get3[A1, A2, A3]

}

object Main {
  def main(args: Array[String]): Unit = {
    new Foo {}
  }
}

Output

[error] (run-main-11) java.lang.AbstractMethodError: example.Main$$anon$1.example$Foo$_setter_$example$Foo$$$1_$eq(Lscala/Tuple2;)V
[error] java.lang.AbstractMethodError: example.Main$$anon$1.example$Foo$_setter_$example$Foo$$$1_$eq(Lscala/Tuple2;)V
[error] 	at example.Foo.$init$(Main.scala:27)
[error] 	at example.Main$$anon$1.<init>(Main.scala:35)
[error] 	at example.Main$.main(Main.scala:35)
[error] 	at example.Main.main(Main.scala)
[error] 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[error] 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[error] 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[error] 	at java.lang.reflect.Method.invoke(Method.java:498)
[error] stack trace is suppressed; run last Compile / bgRun for the full output
[error] Nonzero exit code: 1
[error] (Compile / run) Nonzero exit code: 1

Expectation

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions