Open
Description
I might have already noted these before, but I can't find the ticket. Maybe it was during code review on dotty?
scala> class C[A] { final def foo(x: A)(y: Int) = 0 }; class D extends C[Int] { def foo(x: Int, y: Int) = 1 }
defined class C
defined class D
scala> new D().foo(0)(0)
java.lang.VerifyError: class D overrides final method foo.(Ljava/lang/Object;I)I
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
at scala.reflect.internal.util.AbstractFileClassLoader.findClass(AbstractFileClassLoader.scala:64)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 37 elided
scala> class C[A] { final def foo(implicit x: A) = 0 }; class D extends C[Int] { def foo(x: Int) = 0 }
defined class C
defined class D
scala> new D().foo(0)
java.lang.VerifyError: class D overrides final method foo.(Ljava/lang/Object;)I
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
at scala.reflect.internal.util.AbstractFileClassLoader.findClass(AbstractFileClassLoader.scala:64)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 37 elided