Closed
Description
When calling sbt console
on a 3.5.0 project with Best Effort Compilation enabled, the console opens but any evaluation of Scala expression ends up with NullPointerException.
From stack trace, it seems to be related to dotty rather than SBT. SBT commands like :help
work.
Compiler version
Scala: 3.5.0
Java OpenJDK 64-Bit Server VM, 22.0.2
SBT: 1.10.1
Minimized code
build.sbt:
scalaVersion := "3.5.0"
scalacOptions ++= List("-Ybest-effort", "-Ywith-best-effort-tasty")
$> sbt console
scala> 1
Output
[error] java.lang.NullPointerException: Cannot invoke "java.nio.file.Path.toAbsolutePath()" because the return value of "dotty.tools.io.AbstractFile.jpath()" is null
[error] at dotty.tools.dotc.transform.Pickler.runOn(Pickler.scala:416)
[error] at dotty.tools.dotc.Run.runPhases$1$$anonfun$1(Run.scala:343)
[error] at scala.runtime.function.JProcedure1.apply(JProcedure1.java:15)
[error] at scala.runtime.function.JProcedure1.apply(JProcedure1.java:10)
[error] at scala.collection.ArrayOps$.foreach$extension(ArrayOps.scala:1323)
[error] at dotty.tools.dotc.Run.runPhases$1(Run.scala:336)
[error] at dotty.tools.dotc.Run.compileUnits$$anonfun$1(Run.scala:384)
[error] at dotty.tools.dotc.Run.compileUnits$$anonfun$adapted$1(Run.scala:396)
[error] at dotty.tools.dotc.util.Stats$.maybeMonitored(Stats.scala:69)
[error] at dotty.tools.dotc.Run.compileUnits(Run.scala:396)
[error] at dotty.tools.dotc.Run.compileUnits(Run.scala:288)
[error] at dotty.tools.repl.ReplCompiler.compile(ReplCompiler.scala:88)
[error] at dotty.tools.repl.ReplDriver.compile(ReplDriver.scala:321)
[error] at dotty.tools.repl.ReplDriver.interpret(ReplDriver.scala:283)
[error] at dotty.tools.repl.ReplDriver.loop$1(ReplDriver.scala:196)
[error] at dotty.tools.repl.ReplDriver.runUntilQuit$$anonfun$1(ReplDriver.scala:199)
[error] at dotty.tools.repl.ReplDriver.withRedirectedOutput(ReplDriver.scala:238)
[error] at dotty.tools.repl.ReplDriver.runBody$$anonfun$1(ReplDriver.scala:212)
[error] at dotty.tools.runner.ScalaClassLoader$.asContext(ScalaClassLoader.scala:80)
[error] at dotty.tools.repl.ReplDriver.runBody(ReplDriver.scala:212)
[error] at dotty.tools.repl.ReplDriver.runUntilQuit(ReplDriver.scala:199)
[error] at xsbt.ConsoleInterface.run(ConsoleInterface.java:52)
[error] at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
[error] at java.base/java.lang.reflect.Method.invoke(Method.java:580)
[error] at sbt.internal.inc.AnalyzingCompiler.invoke(AnalyzingCompiler.scala:329)
[error] at sbt.internal.inc.AnalyzingCompiler.console(AnalyzingCompiler.scala:233)
[error] at sbt.Console.console0$1(Console.scala:65)
[error] at sbt.Console.$anonfun$apply$5(Console.scala:75)
[error] at sbt.Run$.executeSuccess(Run.scala:187)
[error] at sbt.Console.$anonfun$apply$4(Console.scala:75)
[error] at sbt.internal.util.Terminal.withRawInput(Terminal.scala:146)
[error] at sbt.internal.util.Terminal.withRawInput$(Terminal.scala:144)
[error] at sbt.internal.util.Terminal$ProxyTerminal$.withRawInput(Terminal.scala:424)
[error] at sbt.Console.$anonfun$apply$3(Console.scala:75)
[error] at sbt.internal.util.Terminal$TerminalImpl.withRawOutput(Terminal.scala:1028)
[error] at sbt.internal.util.Terminal$ProxyTerminal$.withRawOutput(Terminal.scala:463)
[error] at sbt.Console.apply(Console.scala:72)
[error] at sbt.Console.apply(Console.scala:50)
[error] at sbt.Console.apply(Console.scala:42)
[error] at sbt.Defaults$.$anonfun$consoleTask$1(Defaults.scala:2287)
[error] at sbt.Defaults$.$anonfun$consoleTask$1$adapted(Defaults.scala:2273)
[error] at scala.Function1.$anonfun$compose$1(Function1.scala:49)
[error] at sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:63)
[error] at sbt.std.Transform$$anon$4.work(Transform.scala:69)
[error] at sbt.Execute.$anonfun$submit$2(Execute.scala:283)
[error] at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:24)
[error] at sbt.Execute.work(Execute.scala:292)
[error] at sbt.Execute.$anonfun$submit$1(Execute.scala:283)
[error] at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:265)
[error] at sbt.CompletionService$$anon$2.call(CompletionService.scala:65)
[error] at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
[error] at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572)
[error] at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
[error] at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
[error] at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
[error] at java.base/java.lang.Thread.run(Thread.java:1570)
[error] (Compile / console) java.lang.NullPointerException: Cannot invoke "java.nio.file.Path.toAbsolutePath()" because the return value of "dotty.tools.io.AbstractFile.jpath()" is null