-
Notifications
You must be signed in to change notification settings - Fork 21
Closed
scala/scala
#9976Labels
backendfixed in Scala 3This issue does not exist in the Scala 3 compiler (https://github.com/lampepfl/dotty/)This issue does not exist in the Scala 3 compiler (https://github.com/lampepfl/dotty/)has PR
Milestone
Description
reproduction steps
using Scala 2.13.8 and sbt 1.6.2 with OpenJDK 11.0.13
package com.example
class Sync
class Async extends Sync
trait Base {
def foo: Sync
}
trait BaseSync extends Base {
override def foo: Sync
}
trait BaseAsync extends Base {
override def foo: Async
}
abstract class ImplAsync extends BaseAsync {
final override def foo: Async =
new Async
}
final class StrangeClass extends ImplAsync with BaseSync
object Main {
def main(args: Array[String]): Unit = {
println((new StrangeClass).foo)
}
}problem
When loading StrangeClass (I guess) the bytecode verifier (I think) throws an exception: java.lang.VerifyError: class com.example.StrangeClass overrides final method com.example.ImplAsync.foo()Lcom/example/Sync;
Exception in thread "sbt-bg-threads-52" java.lang.VerifyError: class com.example.StrangeClass overrides final method com.example.ImplAsync.foo()Lcom/example/Sync;
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017)
at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
at java.base/java.net.URLClassLoader.defineClass(URLClassLoader.java:555)
at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:458)
at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:452)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:451)
at sbt.internal.ManagedClassLoader.findClass(ManagedClassLoader.java:102)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:589)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
at com.example.Main$.main(Strange.scala:28)
at com.example.Main.main(Strange.scala)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at sbt.Run.invokeMain(Run.scala:143)
at sbt.Run.execute$1(Run.scala:93)
at sbt.Run.$anonfun$runWithLoader$5(Run.scala:120)
at sbt.Run$.executeSuccess(Run.scala:186)
at sbt.Run.runWithLoader(Run.scala:120)
at sbt.Defaults$.$anonfun$bgRunTask$6(Defaults.scala:1983)
at sbt.Defaults$.$anonfun$termWrapper$2(Defaults.scala:1922)
at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
at scala.util.Try$.apply(Try.scala:213)
at sbt.internal.BackgroundThreadPool$BackgroundRunnable.run(DefaultBackgroundJobService.scala:369)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:829)
I'm not sure what to expect, but either a compile-time error, or a working program, and not a VerifyError.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
backendfixed in Scala 3This issue does not exist in the Scala 3 compiler (https://github.com/lampepfl/dotty/)This issue does not exist in the Scala 3 compiler (https://github.com/lampepfl/dotty/)has PR