emezeske/lein-cljsbuild

Custom tagged literals cause build failure

Open

#482 ouverte le 27 nov. 2017

Voir sur GitHub
 (1 commentaire) (0 réactions) (0 assignés)Clojure (153 forks)batch import
BugHelp WantedSuccessful Repro

Métriques du dépôt

Stars
 (1 096 stars)
Métriques de merge PR
 (Aucune PR mergée en 30 j)

Description

In short, usage of custom tagged literals (aka "data readers") works as expected using cljs.build.api, but fails under cljsbuild.

A reproducing project is available here:

https://github.com/cemerick/failing-cljsbuild-data-readers

Using cljs.build.api:

$ lein run -m build
$ node target/out-min/min.js
we made a Bar: #cemerick.foo.Bar{:a 1, :b 2}

Using cljsbuild:

$ lein cljsbuild once min
Compiling ClojureScript...
Compiling ["target/out-min/min.js"] from ["src"]...
Compiling ["target/out-min/min.js"] failed.
clojure.lang.ExceptionInfo: failed compiling file:/mnt/g/dev/clojure/failing-data-readers/src/cemerick/foo.c
ljs {:file #object[java.io.File 0x239678d "/mnt/g/dev/clojure/failing-data-readers/src/cemerick/foo.cljs"]}
        at clojure.core$ex_info.invokeStatic(core.clj:4744)
        at clojure.core$ex_info.invoke(core.clj:4744)
        at cljs.compiler$compile_file$fn__4697.invoke(compiler.cljc:1552)
        at cljs.compiler$compile_file.invokeStatic(compiler.cljc:1513)
        at cljs.compiler$compile_file.invoke(compiler.cljc:1489)
        at cljs.closure$compile_file.invokeStatic(closure.clj:540)
        at cljs.closure$compile_file.invoke(closure.clj:531)
        at cljs.closure$eval6952$fn__6953.invoke(closure.clj:609)
        at cljs.closure$eval6888$fn__6889$G__6877__6896.invoke(closure.clj:493)
        at cljs.closure$compile_sources$iter__7076__7080$fn__7081.invoke(closure.clj:954)
Caused by: java.lang.IllegalStateException: Attempting to call unbound fn: #'cemerick.foo/read-bar
        at clojure.lang.Var$Unbound.throwArity(Var.java:45)
        at clojure.lang.AFn.invoke(AFn.java:32)
        at clojure.lang.Var.invoke(Var.java:381)
        at clojure.tools.reader$read_tagged.invokeStatic(reader.clj:854)
        at clojure.tools.reader$read_tagged.invoke(reader.clj:846)
        at clojure.tools.reader$read_dispatch.invokeStatic(reader.clj:71)
        at clojure.tools.reader$read_dispatch.invoke(reader.clj:66)
        at clojure.tools.reader$read_STAR_.invokeStatic(reader.clj:924)
        ... 78 more
Subprocess failed

I don't know how or why, but the Clojure file that contains the data reader var/fn is not loaded properly, though it is loaded at some point (which you can verify by adding a top-level println expr to cemerick/foo/bar.clj). As seen above, this issue is not present when cljsbuild isn't used.

Guide contributeur