Skip to content

NoSuchMethodError when overriding a trait constructor val parameter #1263

Closed
@julienrf

Description

@julienrf

Consider the following code:

trait Foo(val s: String)

val foo = new Foo { override val s = "bar" }

It compiles fine. Maybe it should raise a compilation error?

At run-time we get the following exception:

java.lang.NoSuchMethodError: Initialization$Foo.initial$s()Ljava/lang/String;
        at Initialization$$anon$1.<init>(Initialization.scala:8)
        at Initialization$.<init>(Initialization.scala:8)
        at Initialization$.<clinit>(Initialization.scala)
        at Main$.main(Main.scala:5)
        at Main.main(Main.scala)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions