Compiler version
3.3.7, 3.8.3
Minimized code
class Foo(private val a: String) extends AnyVal {
export a.*
}
new Foo("bar")
Output
Running this code produces the following error
java.lang.IncompatibleClassChangeError: class Playground$Foo overrides final method java.lang.Object.wait()V
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:150)
at java.base/java.net.URLClassLoader.defineClass(URLClassLoader.java:524)
at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:427)
at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:421)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:712)
at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:420)
at sbt.internal.ManagedClassLoader.findClass(ManagedClassLoader.java:103)
at sbt.internal.BottomClassLoader.lambda$findClass$0(BottomClassLoader.java:57)
at sbt.internal.ClassLoadingLock.withLock(ClassLoadingLock.java:30)
at sbt.internal.BottomClassLoader.findClass(BottomClassLoader.java:52)
at sbt.internal.BottomClassLoader.loadClass(BottomClassLoader.java:67)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
at Playground$.<clinit>(main.scala:10)
at Main$.<clinit>(main.scala:17)
at Main.main(main.scala)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at sbt.Run.invokeMain(Run.scala:144)
at sbt.Run.execute$1(Run.scala:94)
at sbt.Run.$anonfun$runWithLoader$5(Run.scala:121)
at sbt.Run$.executeSuccess(Run.scala:187)
at sbt.Run.runWithLoader(Run.scala:121)
at sbt.Run.run(Run.scala:128)
at org.scastie.sbtplugin.SbtScastiePlugin$$anon$1.$anonfun$run$1(SbtScastiePlugin.scala:37)
at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
at sbt.util.InterfaceUtil$$anon$1.get(InterfaceUtil.scala:32)
at sbt.ScastieTrapExit$App.run(ScastieTrapExit.scala:258)
at java.base/java.lang.Thread.run(Thread.java:840)
Expectation
I would expect this to not fail at runtime if it compiles successfully. Either the compiler should not export final methods from Object in classes that extend AnyVal, or it should fail with a compilation error when that is attempted
Compiler version
3.3.7, 3.8.3
Minimized code
Output
Running this code produces the following error
Expectation
I would expect this to not fail at runtime if it compiles successfully. Either the compiler should not export
finalmethods fromObjectin classes that extendAnyVal, or it should fail with a compilation error when that is attempted