Skip to content

REPL with -Ybest-effort throws NullPointerException #21431

Closed
@jirijakes

Description

@jirijakes

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

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions