scala-native / scala-native

Your favorite language gets closer to bare metal.
http://scala-native.org
Other
4.46k stars 362 forks source link

NPE on Console #3104

Closed isomarcte closed 1 year ago

isomarcte commented 1 year ago

I'm getting a NullPointerException when running console on a native project on multiple repos. I've tried cats v2.9.0 and this branch of idna4s.

[error] java.lang.NullPointerException
[error]         at scala.scalanative.nscplugin.NirGenFile.genPathFor(NirGenFile.scala:28)
[error]         at scala.scalanative.nscplugin.NirGenFile.genPathFor$(NirGenFile.scala:18)
[error]         at scala.scalanative.nscplugin.NirGenPhase.genPathFor(NirGenPhase.scala:14)
[error]         at scala.scalanative.nscplugin.NirGenFile.genPathFor(NirGenFile.scala:15)
[error]         at scala.scalanative.nscplugin.NirGenFile.genPathFor$(NirGenFile.scala:13)
[error]         at scala.scalanative.nscplugin.NirGenPhase.genPathFor(NirGenPhase.scala:14)
[error]         at scala.scalanative.nscplugin.NirGenPhase$NirCodePhase.$anonfun$apply$6(NirGenPhase.scala:150)
[error]         at scala.collection.StrictOptimizedMapOps.map(StrictOptimizedMapOps.scala:28)
[error]         at scala.collection.StrictOptimizedMapOps.map$(StrictOptimizedMapOps.scala:27)
[error]         at scala.collection.immutable.HashMap.map(HashMap.scala:39)
[error]         at scala.scalanative.nscplugin.NirGenPhase$NirCodePhase.apply(NirGenPhase.scala:148)
[error]         at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:467)
[error]         at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:414)
[error]         at scala.scalanative.nscplugin.NirGenPhase$NirCodePhase.run(NirGenPhase.scala:55)
[error]         at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1530)
[error]         at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1514)
[error]         at scala.tools.nsc.Global$Run.compileSources(Global.scala:1506)
[error]         at scala.tools.nsc.interpreter.IMain.$anonfun$global$3(IMain.scala:155)
[error]         at scala.tools.nsc.interpreter.IMain.liftedTree1$1(IMain.scala:1420)
[error]         at scala.tools.nsc.interpreter.IMain.global$lzycompute(IMain.scala:151)
[error]         at scala.tools.nsc.interpreter.IMain.global(IMain.scala:142)
[error]         at scala.tools.nsc.interpreter.IMain.withSuppressedSettings(IMain.scala:106)
[error]         at scala.tools.nsc.interpreter.shell.ILoop.$anonfun$run$1(ILoop.scala:954)
[error]         at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
[error]         at scala.tools.nsc.interpreter.shell.ReplReporterImpl.withoutPrintingResults(Reporter.scala:64)
[error]         at scala.tools.nsc.interpreter.shell.ILoop.run(ILoop.scala:954)
[error]         at xsbt.ConsoleBridge.run(ConsoleBridge.scala:78)
[error]         at sbt.internal.inc.AnalyzingCompiler.console(AnalyzingCompiler.scala:208)
[error]         at sbt.Console.console0$1(Console.scala:64)
[error]         at sbt.Console.$anonfun$apply$5(Console.scala:74)
[error]         at sbt.Run$.executeSuccess(Run.scala:186)
[error]         at sbt.Console.$anonfun$apply$4(Console.scala:74)
[error]         at sbt.internal.util.Terminal.withRawInput(Terminal.scala:145)
[error]         at sbt.internal.util.Terminal.withRawInput$(Terminal.scala:143)
[error]         at sbt.internal.util.Terminal$ProxyTerminal$.withRawInput(Terminal.scala:392)
[error]         at sbt.Console.$anonfun$apply$3(Console.scala:74)
[error]         at sbt.internal.util.Terminal$TerminalImpl.withRawOutput(Terminal.scala:990)
[error]         at sbt.internal.util.Terminal$ProxyTerminal$.withRawOutput(Terminal.scala:431)
[error]         at sbt.Console.apply(Console.scala:71)
[error]         at sbt.Console.apply(Console.scala:49)
[error]         at sbt.Console.apply(Console.scala:41)
[error]         at sbt.Defaults$.$anonfun$consoleTask$1(Defaults.scala:2229)
[error]         at sbt.Defaults$.$anonfun$consoleTask$1$adapted(Defaults.scala:2215)
[error]         at scala.Function1.$anonfun$compose$1(Function1.scala:49)
[error]         at sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:62)
[error]         at sbt.std.Transform$$anon$4.work(Transform.scala:68)
[error]         at sbt.Execute.$anonfun$submit$2(Execute.scala:282)
[error]         at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:23)
[error]         at sbt.Execute.work(Execute.scala:291)
[error]         at sbt.Execute.$anonfun$submit$1(Execute.scala:282)
[error]         at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:265)
[error]         at sbt.CompletionService$$anon$2.call(CompletionService.scala:64)
[error]         at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[error]         at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
[error]         at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[error]         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
[error]         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
[error]         at java.lang.Thread.run(Thread.java:750)
[error] (coreNative / Compile / console) java.lang.NullPointerException
[error] Total time: 55 s, completed Jan 24, 2023 8:43:30 AM

Given I don't see any other issues about this and googling yields no results and that I also just hit #3103, I'm wondering if something is up on my local system for Scala native.

Any ideas? I'm using ArchLinux if that means anything. Are there any relevant library/program versions I can provide to help here?

armanbilge commented 1 year ago

console is currently not supported for Scala Native, because there is no Scala-to-native interpreter. (Similarly, Scala.js also doesn't support console for the same reasons).

We should probably raise a beter error in this instance :)

isomarcte commented 1 year ago

Oh gosh. How embarrassing (for me)...I had a strong recollection I'd used it before, but I guess not.

isomarcte commented 1 year ago

I'm glad there were actually no bugs.

ekrich commented 1 year ago

@armanbilge Do you know if Scala.js has a warning or something we could port?

armanbilge commented 1 year ago

@ekrich yes it does, should be easy to port. https://github.com/scala-js/scala-js/blob/ab60f8260be87000dc60aade640ae84247747fc3/sbt-plugin/src/main/scala/org/scalajs/sbtplugin/ScalaJSPluginInternal.scala#L491-L494