Skip to content

final val overriding def: Duplicate method name #12301

Closed
scala/scala
#9431
@Sciss

Description

@Sciss

reproduction steps

using Scala 2.13.4, example:

case object Foo extends Product {
  override final val productPrefix = "Foo"
}

println(Foo)

problem

Causes a runtime error in the class loader:

java.lang.ClassFormatError: Duplicate method name "productPrefix" with signature "()Ljava.lang.String;" in class file Playground$Foo$
	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:468)
	at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
	at sbt.internal.ManagedClassLoader.findClass(ManagedClassLoader.java:98)
	at sbt.internal.BottomClassLoader.lambda$findClass$0(BottomClassLoader.java:56)
	at sbt.internal.ClassLoadingLock.withLock(ClassLoadingLock.java:28)
	at sbt.internal.BottomClassLoader.findClass(BottomClassLoader.java:51)
	at sbt.internal.BottomClassLoader.loadClass(BottomClassLoader.java:66)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	at Playground$.delayedEndpoint$Playground$1(main.scala:7)
...

Possibly related: #8663

Metadata

Metadata

Assignees

No one assigned

    Labels

    backendfixed in Scala 3This issue does not exist in the Scala 3 compiler (https://github.com/lampepfl/dotty/)runtime crash

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions