Closed
Description
Compiler version
3.0.0-RC3 but also occurs on latest master
Minimized code
First file:
package main
class MainClass:
val a = SecondClass(2)
object Main extends App:
MainClass()
Second file:
package main
class SecondClass(a: Int)
Now compile the code.
Then change in second file:
package main
class SecondClass(a: Int)(b: String) // <--- Second param clause
Output
Compilation passes although there's no second param specified in constructor invocation at SecondClass.
After running such code we get:
[error] (run-main-0) java.lang.NoSuchMethodError: 'void main.SecondClass.<init>(int)'
[error] java.lang.NoSuchMethodError: 'void main.SecondClass.<init>(int)'
[error] at main.MainClass.<init>(MainClass.scala:4)
[error] at main.Main$.<clinit>(MainClass.scala:7)
[error] at main.Main.main(MainClass.scala)
[error] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[error] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[error] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[error] at java.base/java.lang.reflect.Method.invoke(Method.java:566)
Expectation
Incremental compilation should look for all usages of constructor and verify its corectness