Skip to content

Scala script runner puts cwd ahead of script artifacts on runtime classpath #18492

Open
@som-snytt

Description

@som-snytt

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.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions