thheller / shadow-cljs

ClojureScript compilation made easy
https://github.com/thheller/shadow-cljs
Eclipse Public License 1.0
2.23k stars 173 forks source link

date-fns v3.3.1 and shadow-cljs 2.26.5 to 2.26.6 triggers ICE #1169

Closed raymond-w-ko closed 5 months ago

raymond-w-ko commented 5 months ago

Downgrading to the previous version works.

This seems to be the file that triggers the error

shadow-cljs - starting via "clojure"
[:architect] Compiling ...
RuntimeException: INTERNAL COMPILER ERROR.
Please report this problem.

null
  Node(CALL): node_modules/date-fns/parse/_lib/Setter.js:52:0
class DateToSystemTimezoneSetter extends Setter {
  Parent(EXPR_RESULT): node_modules/date-fns/parse/_lib/Setter.js:52:0
class DateToSystemTimezoneSetter extends Setter {

        com.google.javascript.jscomp.Compiler.throwInternalError (Compiler.java:3269)
        com.google.javascript.jscomp.NodeTraversal.throwUnexpectedException (NodeTraversal.java:509)
        com.google.javascript.jscomp.NodeTraversal.traverse (NodeTraversal.java:529)
        com.google.javascript.jscomp.NodeTraversal$Builder.traverse (NodeTraversal.java:465)
        com.google.javascript.jscomp.NodeTraversal.traverse (NodeTraversal.java:535)
        shadow.build.closure.FindSurvivingRequireCalls.find (FindSurvivingRequireCalls.java:43)
        shadow.build.closure/convert-sources-simple*/fn--15012 (closure.clj:2126)
        clojure.core.protocols/iter-reduce (protocols.clj:49)
        clojure.core.protocols/fn--8230 (protocols.clj:75)
        clojure.core.protocols/fn--8230 (protocols.clj:75)
        clojure.core.protocols/fn--8178/G--8173--8191 (protocols.clj:13)
        clojure.core/reduce (core.clj:6886)
        clojure.core/reduce (core.clj:6868)
        shadow.cljs.util/reduce-> (util.clj:42)
        shadow.cljs.util/reduce-> (util.clj:41)
        shadow.build.closure/convert-sources-simple* (closure.clj:2088)
        shadow.build.closure/convert-sources-simple* (closure.clj:1923)
        shadow.build.closure/convert-sources-simple (closure.clj:2233)
        shadow.build.closure/convert-sources-simple (closure.clj:2183)
        shadow.build.compiler/maybe-closure-convert (compiler.clj:1357)
        shadow.build.compiler/maybe-closure-convert (compiler.clj:1350)
        shadow.build.compiler/compile-all (compiler.clj:1606)
        shadow.build.compiler/compile-all (compiler.clj:1469)
        shadow.build.api/compile-sources (api.clj:261)
        shadow.build.api/compile-sources (api.clj:253)
        shadow.build/compile (build.clj:512)
        shadow.build/compile (build.clj:493)
        shadow.cljs.devtools.api/release* (api.clj:338)
        shadow.cljs.devtools.api/release* (api.clj:324)
        shadow.cljs.devtools.cli-actual/do-build-command (cli_actual.clj:28)
        shadow.cljs.devtools.cli-actual/do-build-command (cli_actual.clj:25)
        shadow.cljs.devtools.cli-actual/do-build-commands (cli_actual.clj:49)
        shadow.cljs.devtools.cli-actual/do-build-commands (cli_actual.clj:38)
        shadow.cljs.devtools.cli-actual/main/body-fn--18750--auto----19459 (cli_actual.clj:166)
        shadow.cljs.devtools.cli-actual/main (cli_actual.clj:165)
        shadow.cljs.devtools.cli-actual/main (cli_actual.clj:132)
        clojure.core/apply (core.clj:671)
        clojure.core/apply (core.clj:662)
        shadow.cljs.devtools.cli-actual/-main (cli_actual.clj:219)
        shadow.cljs.devtools.cli-actual/-main (cli_actual.clj:217)
        clojure.lang.Var.applyTo (Var.java:705)
        clojure.core/apply (core.clj:667)
        clojure.core/apply (core.clj:662)
        shadow.cljs.devtools.cli/-main (cli.clj:75)
        shadow.cljs.devtools.cli/-main (cli.clj:67)
        clojure.lang.Var.applyTo (Var.java:705)
        clojure.core/apply (core.clj:667)
        clojure.main/main-opt (main.clj:514)
        clojure.main/main-opt (main.clj:510)
        clojure.main/main (main.clj:664)
        clojure.main/main (main.clj:616)
        clojure.lang.Var.applyTo (Var.java:705)
        clojure.main.main (main.java:40)
Caused by:
NullPointerException: 
        shadow.build.closure.FindSurvivingRequireCalls.visit (FindSurvivingRequireCalls.java:23)
        com.google.javascript.jscomp.NodeTraversal.traverseBranch (NodeTraversal.java:963)
        com.google.javascript.jscomp.NodeTraversal.traverseBranch (NodeTraversal.java:953)
        com.google.javascript.jscomp.NodeTraversal.traverseBranch (NodeTraversal.java:953)
        com.google.javascript.jscomp.NodeTraversal.traverseFunction (NodeTraversal.java:1008)
        com.google.javascript.jscomp.NodeTraversal.handleFunction (NodeTraversal.java:859)
        com.google.javascript.jscomp.NodeTraversal.traverseBranch (NodeTraversal.java:905)
        com.google.javascript.jscomp.NodeTraversal.traverseBranch (NodeTraversal.java:953)
        com.google.javascript.jscomp.NodeTraversal.handleClassMembers (NodeTraversal.java:1110)
        com.google.javascript.jscomp.NodeTraversal.traverseBranch (NodeTraversal.java:914)
        com.google.javascript.jscomp.NodeTraversal.handleClass (NodeTraversal.java:1052)
        com.google.javascript.jscomp.NodeTraversal.traverseBranch (NodeTraversal.java:911)
        com.google.javascript.jscomp.NodeTraversal.traverseBranch (NodeTraversal.java:953)
        com.google.javascript.jscomp.NodeTraversal.traverseFunction (NodeTraversal.java:1008)
        com.google.javascript.jscomp.NodeTraversal.handleFunction (NodeTraversal.java:859)
        com.google.javascript.jscomp.NodeTraversal.traverseBranch (NodeTraversal.java:905)
        com.google.javascript.jscomp.NodeTraversal.traverseBranch (NodeTraversal.java:953)
        com.google.javascript.jscomp.NodeTraversal.traverseBranch (NodeTraversal.java:953)
        com.google.javascript.jscomp.NodeTraversal.traverseChildren (NodeTraversal.java:1136)
        com.google.javascript.jscomp.NodeTraversal.handleScript (NodeTraversal.java:847)
        com.google.javascript.jscomp.NodeTraversal.traverseBranch (NodeTraversal.java:902)
        com.google.javascript.jscomp.NodeTraversal.traverse (NodeTraversal.java:526)
        com.google.javascript.jscomp.NodeTraversal$Builder.traverse (NodeTraversal.java:465)
        com.google.javascript.jscomp.NodeTraversal.traverse (NodeTraversal.java:535)
        shadow.build.closure.FindSurvivingRequireCalls.find (FindSurvivingRequireCalls.java:43)
        shadow.build.closure/convert-sources-simple*/fn--15012 (closure.clj:2126)
        clojure.core.protocols/iter-reduce (protocols.clj:49)
        clojure.core.protocols/fn--8230 (protocols.clj:75)
        clojure.core.protocols/fn--8230 (protocols.clj:75)
        clojure.core.protocols/fn--8178/G--8173--8191 (protocols.clj:13)
        clojure.core/reduce (core.clj:6886)
        clojure.core/reduce (core.clj:6868)
        shadow.cljs.util/reduce-> (util.clj:42)
        shadow.cljs.util/reduce-> (util.clj:41)
        shadow.build.closure/convert-sources-simple* (closure.clj:2088)
        shadow.build.closure/convert-sources-simple* (closure.clj:1923)
        shadow.build.closure/convert-sources-simple (closure.clj:2233)
        shadow.build.closure/convert-sources-simple (closure.clj:2183)
        shadow.build.compiler/maybe-closure-convert (compiler.clj:1357)
        shadow.build.compiler/maybe-closure-convert (compiler.clj:1350)
        shadow.build.compiler/compile-all (compiler.clj:1606)
        shadow.build.compiler/compile-all (compiler.clj:1469)
        shadow.build.api/compile-sources (api.clj:261)
        shadow.build.api/compile-sources (api.clj:253)
        shadow.build/compile (build.clj:512)
        shadow.build/compile (build.clj:493)
        shadow.cljs.devtools.api/release* (api.clj:338)
        shadow.cljs.devtools.api/release* (api.clj:324)
        shadow.cljs.devtools.cli-actual/do-build-command (cli_actual.clj:28)
        shadow.cljs.devtools.cli-actual/do-build-command (cli_actual.clj:25)
        shadow.cljs.devtools.cli-actual/do-build-commands (cli_actual.clj:49)
        shadow.cljs.devtools.cli-actual/do-build-commands (cli_actual.clj:38)
        shadow.cljs.devtools.cli-actual/main/body-fn--18750--auto----19459 (cli_actual.clj:166)
        shadow.cljs.devtools.cli-actual/main (cli_actual.clj:165)
        shadow.cljs.devtools.cli-actual/main (cli_actual.clj:132)
        clojure.core/apply (core.clj:671)
        clojure.core/apply (core.clj:662)
        shadow.cljs.devtools.cli-actual/-main (cli_actual.clj:219)
        shadow.cljs.devtools.cli-actual/-main (cli_actual.clj:217)
        clojure.lang.Var.applyTo (Var.java:705)
        clojure.core/apply (core.clj:667)
        clojure.core/apply (core.clj:662)
        shadow.cljs.devtools.cli/-main (cli.clj:75)
        shadow.cljs.devtools.cli/-main (cli.clj:67)
        clojure.lang.Var.applyTo (Var.java:705)
        clojure.core/apply (core.clj:667)
        clojure.main/main-opt (main.clj:514)
        clojure.main/main-opt (main.clj:510)
        clojure.main/main (main.clj:664)
        clojure.main/main (main.clj:616)
        clojure.lang.Var.applyTo (Var.java:705)
        clojure.main.main (main.java:40)

Exited with code exit status 1
raymond-w-ko commented 5 months ago

My use:

   ["date-fns" :as df]
   ["date-fns/fromUnixTime" :as df-from-unix-time]

(def from-unix-time df-from-unix-time/fromUnixTime)
(assert (and from-unix-time (fn? from-unix-time)))

(def formatDistanceToNow df/formatDistanceToNow)
(assert (and formatDistanceToNow (fn? formatDistanceToNow)))

(def df-format df/format)
(assert (and df-format (fn? df-format)))
thheller commented 5 months ago

My Bad. Had a || where a && should have been in the Java code I changed. Fixed in 2.26.7.