amnaredo / test

0 stars 0 forks source link

Failing IR checks #83

Open amnaredo opened 2 years ago

amnaredo commented 2 years ago

Hey Haoyi, check this out.

Excerpt of SBT settings in my project which depends on upickle:

    emitSourceMaps in fullOptJS := false,
    checkScalaJSIR in fullOptJS := true,
    inliningMode in fullOptJS := InliningMode.Batch,

And error message:

[info] Direct Optimizing /home/golly/xxxx/target/scala-2.11/xxxx-opt.js
[error] file:/Users/haoyi/Dropbox%20(Personal)/Workspace/upickle/js/shared/main/scala/upickle/Implicits.scala(139:16:Apply): Cannot call Scala method value__T on non-class type NullType
[error] file:/Users/haoyi/Dropbox%20(Personal)/Workspace/upickle/js/shared/main/scala/upickle/Implicits.scala(139:16:Apply): Cannot call Scala method value__T on non-class type NullType
java.lang.RuntimeException: There were 2 IR checking errors.
    at scala.sys.package$.error(package.scala:27)
    at scala.scalajs.tools.optimizer.ScalaJSOptimizer.scala$scalajs$tools$optimizer$ScalaJSOptimizer$$checkIR(ScalaJSOptimizer.scala:171)
    at scala.scalajs.tools.optimizer.ScalaJSOptimizer$$anonfun$3$$anonfun$apply$1.apply$mcV$sp(ScalaJSOptimizer.scala:106)
    at scala.scalajs.tools.optimizer.ScalaJSOptimizer$$anonfun$3$$anonfun$apply$1.apply(ScalaJSOptimizer.scala:105)
    at scala.scalajs.tools.optimizer.ScalaJSOptimizer$$anonfun$3$$anonfun$apply$1.apply(ScalaJSOptimizer.scala:105)
    at scala.scalajs.tools.optimizer.IncOptimizer$.logTime(IncOptimizer.scala:731)
    at scala.scalajs.tools.optimizer.ScalaJSOptimizer$$anonfun$3.apply(ScalaJSOptimizer.scala:104)
    at scala.scalajs.tools.optimizer.ScalaJSOptimizer$$anonfun$3.apply(ScalaJSOptimizer.scala:96)
    at scala.scalajs.tools.optimizer.IncOptimizer$.logTime(IncOptimizer.scala:731)
    at scala.scalajs.tools.optimizer.ScalaJSOptimizer.optimizeIR(ScalaJSOptimizer.scala:96)
    at scala.scalajs.tools.optimizer.ScalaJSClosureOptimizer.directOptimizeIR(ScalaJSClosureOptimizer.scala:88)
    at scala.scalajs.tools.optimizer.ScalaJSClosureOptimizer$$anonfun$directOptimizeCP$1.apply$mcV$sp(ScalaJSClosureOptimizer.scala:74)
    at scala.scalajs.tools.io.CacheUtils$.cached(CacheUtils.scala:41)
    at scala.scalajs.tools.optimizer.ScalaJSClosureOptimizer.directOptimizeCP(ScalaJSClosureOptimizer.scala:67)
    at scala.scalajs.sbtplugin.ScalaJSPluginInternal$$anonfun$24$$anonfun$apply$6.apply(ScalaJSPluginInternal.scala:241)
    at scala.scalajs.sbtplugin.ScalaJSPluginInternal$$anonfun$24$$anonfun$apply$6.apply(ScalaJSPluginInternal.scala:240)
    at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47)
    at sbt.$tilde$greater$$anonfun$$u2219$1.apply(TypeFunctions.scala:40)
    at sbt.std.Transform$$anon$4.work(System.scala:63)
    at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:226)
    at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:226)
    at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:17)
    at sbt.Execute.work(Execute.scala:235)
    at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:226)
    at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:226)
    at sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:159)
    at sbt.CompletionService$$anon$2.call(CompletionService.scala:28)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

Using sjs 0.5.4, Scala 2.11.2.

ID: 27 Original Author: japgolly

amnaredo commented 2 years ago

Ah, I just saw this too, but haven't managed to reproduce it reliably (it went away after I cleaned). @sjrd do you have any idea what may be causing this? It seems like something's funky with caching since the problem goes away after clean, but I'm not sure.

Original Author: lihaoyi

amnaredo commented 2 years ago

Hum, that's the IR checker being too restrictive. The code is actually valid (it is always valid to call any method on NullType, or NothingType for that matter), but the IR checker does not recognize it as such.

@japgolly You should just deactivate the IR checker. I'll fix this in 0.6.0.

Original Author: sjrd

amnaredo commented 2 years ago

https://github.com/scala-js/scala-js/issues/1123

Original Author: sjrd