Closed
Description
Same bug as scala/bug#11136:
trait IO {
def c(x: Int): Int = ???
}
trait SO extends IO {
override final def c(x: Int): Int = ???
}
trait SOIO extends IO {
override def c(x: Int): Int = ???
}
trait SOSO extends SOIO with SO
abstract class AS extends SO
class L extends AS with SOSO
object Test {
def main(args: Array[String]): Unit = {
new L
}
}
Exception in thread "main" java.lang.VerifyError: class L overrides final method c.(I)I
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at Test$.main(i11136.scala:16)
at Test.main(i11136.scala)
Decompilation output:
% cfr AS
public abstract class AS
implements SO {
public AS() {
}
@Override
public final int c(int x) {
return SO.super.c(x);
}
}
% cfr L
public class L
extends AS
implements SOIO,
SOSO {
public L() {
}
@Override
public int c(int x) {
return SOIO.super.c(x);
}
}