Open
Description
Compiler version
3.3.0
Minimized code
import java.util.concurrent.Callable
class C extends Callable[C] {
def call(): C = this
}
@main def test() = println(C())
Output
➜ snips scalac -d /tmp/sandbox callable.scala
➜ snips scala -cp /tmp/sandbox test
C@516be40f
➜ snips scala callable.scala
java.lang.NoSuchMethodError: C: method 'void <init>()' not found
at callable$package$.test(callable.scala:7)
at test.main(callable.scala:7)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
at java.base/java.lang.reflect.Method.invoke(Method.java:578)
at dotty.tools.scripting.ScriptingDriver.compileAndRun(ScriptingDriver.scala:33)
at dotty.tools.scripting.Main$.process(Main.scala:45)
at dotty.tools.MainGenericRunner$.run$1(MainGenericRunner.scala:250)
at dotty.tools.MainGenericRunner$.process(MainGenericRunner.scala:270)
at dotty.tools.MainGenericRunner$.main(MainGenericRunner.scala:281)
at dotty.tools.MainGenericRunner.main(MainGenericRunner.scala)
Expectation
I expect the scala
command to offer a mere convenience over running scalac && scala
, and to avoid differences of semantics, let alone run into bugs.