brandonbloom / fipp

Fast Idiomatic Pretty Printer for Clojure
525 stars 44 forks source link

fipp won't compile with cljsbuild projects #42

Closed jaor closed 7 years ago

jaor commented 7 years ago

The issue is easy to replicate. Just create a new project.clj

(defproject test-fipp "0.1.0-SNAPSHOT"
  :dependencies [[org.clojure/clojure "1.8.0"]
                 [org.clojure/clojurescript "1.9.227"]
                 [fipp "0.6.6"]]
  :plugins [[lein-cljsbuild "1.1.4"]]
  :cljsbuild {:builds [{:id "js"
                        :source-paths ["src"]
                        :compiler {:output-to "target/test.js"
                                   :output-dir "target/js"
                                   :optimizations :advanced}}]})

and put a dummy cljc file in src/test_fipp/core.cljc:

(ns test-fipp.core
  (:require [fipp.engine :as engine]))

(defn foo
  [x]
  (println x "Hello, World!"))

now try to compile it with:

lein cljsbuild once

and you'll get an exception that starts like this:

clojure.lang.ExceptionInfo: failed compiling
file:target/js/clojure/core/rrb_vector/trees.cljs {:file #object[java.io.File 0x6a65daed
"target/js/clojure/core/rrb_vector/trees.cljs"]}
        at clojure.core$ex_info.invokeStatic(core.clj:4617)
        at clojure.core$ex_info.invoke(core.clj:4617)
        at
        cljs.compiler$compile_file$fn__3553.invoke(compiler.cljc:1386)

i think the problem might be in the rrb library, but seeing most of the bugs reports in its jira have been unattended for more than a year, i've opted for avoiding rrb in the deque namespace for the time being :).

brandonbloom commented 7 years ago

Thanks for the report. As far as I know, there are numerous folks using Fipp from ClojureScript. Personally, I don't use cljsbuild, so I'd rather not debug it myself unless you can demonstrate the problem is with Fipp (or its dependencies) rather than cljsbuild. Presumably that exception has a "cause" below the first stack trace. What does it say?

jaor commented 7 years ago

i actually think the problem is with the rrb-vector library (see full trace below), and it only happens with very recent versions of clojurescript (e.g., if one tries clojurescript 1.9.183 with the same version of cljsbuild, everything is fine). you can see in the trace that the error is happening in rrb_vector/trees.cljs.

i've removed the dependency on rrb_vector (for cljs compilations) in https://clojars.org/bigml/fipp. that version compiles fine with all versions of cljs and cljsbuild, passes all tests and also works as expected in my projects, so my bet is that the problem is with fipp's dependency, rrb_vector.

i wouldn't claim that's a demonstration, though. for instance, the trace includes calls cljsbuild's runtime, so it's still perfectly possible that the problem root is there. i guess the way to demonstrate it would be to compile the same js project using fipp without cljsbuild, but i currently lack the bandwidth to learn how to do that properly. sorry!

Compiling ClojureScript...
Compiling "target/test.js" from ["src"]...
Compiling "target/test.js" failed.
clojure.lang.ExceptionInfo: failed compiling file:target/js/clojure/core/rrb_vector/trees.cljs {:file #object[java.io.File 0x6a65daed "target/js/clojure/core/rrb_vector/trees.cljs"]}
        at clojure.core$ex_info.invokeStatic(core.clj:4617)
        at clojure.core$ex_info.invoke(core.clj:4617)
        at cljs.compiler$compile_file$fn__3553.invoke(compiler.cljc:1386)
        at cljs.compiler$compile_file.invokeStatic(compiler.cljc:1352)
        at cljs.compiler$compile_file.invoke(compiler.cljc:1332)
        at cljs.closure$compile_file.invokeStatic(closure.clj:474)
        at cljs.closure$compile_file.invoke(closure.clj:465)
        at cljs.closure$eval5300$fn__5301.invoke(closure.clj:541)
        at cljs.closure$eval5236$fn__5237$G__5225__5244.invoke(closure.clj:431)
        at cljs.closure$compile_from_jar.invokeStatic(closure.clj:523)
        at cljs.closure$compile_from_jar.invoke(closure.clj:511)
        at cljs.closure$eval5306$fn__5307.invoke(closure.clj:551)
        at cljs.closure$eval5236$fn__5237$G__5225__5244.invoke(closure.clj:431)
        at cljs.closure$compile_sources$iter__5421__5425$fn__5426.invoke(closure.clj:871)
        at clojure.lang.LazySeq.sval(LazySeq.java:40)
        at clojure.lang.LazySeq.seq(LazySeq.java:49)
        at clojure.lang.Cons.next(Cons.java:39)
        at clojure.lang.RT.next(RT.java:688)
        at clojure.core$next__4341.invokeStatic(core.clj:64)
        at clojure.core$dorun.invokeStatic(core.clj:3033)
        at clojure.core$doall.invokeStatic(core.clj:3039)
        at clojure.core$doall.invoke(core.clj:3039)
        at cljs.closure$compile_sources.invokeStatic(closure.clj:867)
        at cljs.closure$compile_sources.invoke(closure.clj:856)
        at cljs.closure$build.invokeStatic(closure.clj:1988)
        at cljs.closure$build.invoke(closure.clj:1927)
        at cljs.build.api$build.invokeStatic(api.clj:199)
        at cljs.build.api$build.invoke(api.clj:187)
        at cljs.build.api$build.invokeStatic(api.clj:190)
        at cljs.build.api$build.invoke(api.clj:187)
        at cljsbuild.compiler$compile_cljs$fn__5960.invoke(compiler.clj:60)
        at cljsbuild.compiler$compile_cljs.invokeStatic(compiler.clj:59)
        at cljsbuild.compiler$compile_cljs.invoke(compiler.clj:48)
        at cljsbuild.compiler$run_compiler.invokeStatic(compiler.clj:168)
        at cljsbuild.compiler$run_compiler.invoke(compiler.clj:122)
        at user$eval6728$iter__6764__6768$fn__6769$fn__6787.invoke(form-init737526055814581106.clj:1)
        at user$eval6728$iter__6764__6768$fn__6769.invoke(form-init737526055814581106.clj:1)
        at clojure.lang.LazySeq.sval(LazySeq.java:40)
        at clojure.lang.LazySeq.seq(LazySeq.java:49)
        at clojure.lang.RT.seq(RT.java:521)
        at clojure.core$seq__4357.invokeStatic(core.clj:137)
        at clojure.core$dorun.invokeStatic(core.clj:3024)
        at clojure.core$doall.invokeStatic(core.clj:3039)
        at clojure.core$doall.invoke(core.clj:3039)
        at user$eval6728.invokeStatic(form-init737526055814581106.clj:1)
        at user$eval6728.invoke(form-init737526055814581106.clj:1)
        at clojure.lang.Compiler.eval(Compiler.java:6927)
        at clojure.lang.Compiler.eval(Compiler.java:6917)
        at clojure.lang.Compiler.load(Compiler.java:7379)
        at clojure.lang.Compiler.loadFile(Compiler.java:7317)
        at clojure.main$load_script.invokeStatic(main.clj:275)
        at clojure.main$init_opt.invokeStatic(main.clj:277)
        at clojure.main$init_opt.invoke(main.clj:277)
        at clojure.main$initialize.invokeStatic(main.clj:308)
        at clojure.main$null_opt.invokeStatic(main.clj:342)
        at clojure.main$null_opt.invoke(main.clj:339)
        at clojure.main$main.invokeStatic(main.clj:421)
        at clojure.main$main.doInvoke(main.clj:384)
        at clojure.lang.RestFn.invoke(RestFn.java:421)
        at clojure.lang.Var.invoke(Var.java:383)
        at clojure.lang.AFn.applyToHelper(AFn.java:156)
        at clojure.lang.Var.applyTo(Var.java:700)
        at clojure.main.main(main.java:37)
Caused by: clojure.lang.ExceptionInfo: Wrong number of args (1) passed to: nodes/ranges at line 25 target/js/clojure/core/rrb_vector/trees.cljs {:file "target/js/clojure/core/rrb_vector/trees.cljs", :line 25, :column 24, :tag :cljs/analysis-error}
        at clojure.core$ex_info.invokeStatic(core.clj:4617)
        at clojure.core$ex_info.invoke(core.clj:4617)
        at cljs.analyzer$error.invokeStatic(analyzer.cljc:620)
        at cljs.analyzer$error.invoke(analyzer.cljc:616)
        at cljs.analyzer$macroexpand_1.invokeStatic(analyzer.cljc:2703)
        at cljs.analyzer$macroexpand_1.invoke(analyzer.cljc:2699)
        at cljs.analyzer$analyze_seq.invokeStatic(analyzer.cljc:2733)
        at cljs.analyzer$analyze_seq.invoke(analyzer.cljc:2716)
        at cljs.analyzer$analyze_form.invokeStatic(analyzer.cljc:2853)
        at cljs.analyzer$analyze_form.invoke(analyzer.cljc:2849)
        at cljs.analyzer$analyze_STAR_.invokeStatic(analyzer.cljc:2900)
        at cljs.analyzer$analyze_STAR_.invoke(analyzer.cljc:2891)
        at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:2916)
        at cljs.analyzer$analyze.invoke(analyzer.cljc:2903)
        at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:2911)
        at cljs.analyzer$analyze.invoke(analyzer.cljc:2903)
        at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:2910)
        at cljs.analyzer$analyze.invoke(analyzer.cljc:2903)
        at cljs.analyzer$analyze_let_binding_init.invokeStatic(analyzer.cljc:1510)
        at cljs.analyzer$analyze_let_binding_init.invoke(analyzer.cljc:1508)
        at cljs.analyzer$analyze_let_bindings_STAR_.invokeStatic(analyzer.cljc:1532)
        at cljs.analyzer$analyze_let_bindings_STAR_.invoke(analyzer.cljc:1521)
        at cljs.analyzer$analyze_let_bindings.invokeStatic(analyzer.cljc:1563)
        at cljs.analyzer$analyze_let_bindings.invoke(analyzer.cljc:1562)
        at cljs.analyzer$analyze_let.invokeStatic(analyzer.cljc:1578)
        at cljs.analyzer$analyze_let.invoke(analyzer.cljc:1573)
        at cljs.analyzer$eval1725$fn__1726.invoke(analyzer.cljc:1599)
        at clojure.lang.MultiFn.invoke(MultiFn.java:251)
        at cljs.analyzer$analyze_seq_STAR_.invokeStatic(analyzer.cljc:2709)
        at cljs.analyzer$analyze_seq_STAR_.invoke(analyzer.cljc:2707)
        at cljs.analyzer$analyze_seq_STAR__wrap.invokeStatic(analyzer.cljc:2714)
        at cljs.analyzer$analyze_seq_STAR__wrap.invoke(analyzer.cljc:2712)
        at cljs.analyzer$analyze_seq.invokeStatic(analyzer.cljc:2735)
        at cljs.analyzer$analyze_seq.invoke(analyzer.cljc:2716)
        at cljs.analyzer$analyze_form.invokeStatic(analyzer.cljc:2853)
        at cljs.analyzer$analyze_form.invoke(analyzer.cljc:2849)
        at cljs.analyzer$analyze_STAR_.invokeStatic(analyzer.cljc:2900)
        at cljs.analyzer$analyze_STAR_.invoke(analyzer.cljc:2891)
        at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:2916)
        at cljs.analyzer$analyze.invoke(analyzer.cljc:2903)
        at cljs.analyzer$analyze_seq.invokeStatic(analyzer.cljc:2736)
        at cljs.analyzer$analyze_seq.invoke(analyzer.cljc:2716)
        at cljs.analyzer$analyze_form.invokeStatic(analyzer.cljc:2853)
        at cljs.analyzer$analyze_form.invoke(analyzer.cljc:2849)
        at cljs.analyzer$analyze_STAR_.invokeStatic(analyzer.cljc:2900)
        at cljs.analyzer$analyze_STAR_.invoke(analyzer.cljc:2891)
        at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:2916)
        at cljs.analyzer$analyze.invoke(analyzer.cljc:2903)
        at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:2911)
        at cljs.analyzer$analyze.invoke(analyzer.cljc:2903)
        at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:2910)
        at cljs.analyzer$analyze.invoke(analyzer.cljc:2903)
        at cljs.analyzer$eval1546$fn__1548$fn__1554.invoke(analyzer.cljc:1042)
        at cljs.analyzer$eval1546$fn__1548.invoke(analyzer.cljc:1042)
        at clojure.lang.MultiFn.invoke(MultiFn.java:251)
        at cljs.analyzer$analyze_seq_STAR_.invokeStatic(analyzer.cljc:2709)
        at cljs.analyzer$analyze_seq_STAR_.invoke(analyzer.cljc:2707)
        at cljs.analyzer$analyze_seq_STAR__wrap.invokeStatic(analyzer.cljc:2714)
        at cljs.analyzer$analyze_seq_STAR__wrap.invoke(analyzer.cljc:2712)
        at cljs.analyzer$analyze_seq.invokeStatic(analyzer.cljc:2735)
        at cljs.analyzer$analyze_seq.invoke(analyzer.cljc:2716)
        at cljs.analyzer$analyze_form.invokeStatic(analyzer.cljc:2853)
        at cljs.analyzer$analyze_form.invoke(analyzer.cljc:2849)
        at cljs.analyzer$analyze_STAR_.invokeStatic(analyzer.cljc:2900)
        at cljs.analyzer$analyze_STAR_.invoke(analyzer.cljc:2891)
        at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:2916)
        at cljs.analyzer$analyze.invoke(analyzer.cljc:2903)
        at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:2911)
        at cljs.analyzer$analyze.invoke(analyzer.cljc:2903)
        at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:2910)
        at cljs.analyzer$analyze.invoke(analyzer.cljc:2903)
        at cljs.analyzer$eval1546$fn__1548$fn__1554.invoke(analyzer.cljc:1042)
        at cljs.analyzer$eval1546$fn__1548.invoke(analyzer.cljc:1042)
        at clojure.lang.MultiFn.invoke(MultiFn.java:251)
        at cljs.analyzer$analyze_seq_STAR_.invokeStatic(analyzer.cljc:2709)
        at cljs.analyzer$analyze_seq_STAR_.invoke(analyzer.cljc:2707)
        at cljs.analyzer$analyze_seq_STAR__wrap.invokeStatic(analyzer.cljc:2714)
        at cljs.analyzer$analyze_seq_STAR__wrap.invoke(analyzer.cljc:2712)
        at cljs.analyzer$analyze_seq.invokeStatic(analyzer.cljc:2735)
        at cljs.analyzer$analyze_seq.invoke(analyzer.cljc:2716)
        at cljs.analyzer$analyze_form.invokeStatic(analyzer.cljc:2853)
        at cljs.analyzer$analyze_form.invoke(analyzer.cljc:2849)
        at cljs.analyzer$analyze_STAR_.invokeStatic(analyzer.cljc:2900)
        at cljs.analyzer$analyze_STAR_.invoke(analyzer.cljc:2891)
        at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:2916)
        at cljs.analyzer$analyze.invoke(analyzer.cljc:2903)
        at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:2911)
        at cljs.analyzer$analyze.invoke(analyzer.cljc:2903)
        at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:2910)
        at cljs.analyzer$analyze.invoke(analyzer.cljc:2903)
        at cljs.analyzer$eval1706$fn__1708.invoke(analyzer.cljc:1489)
        at clojure.lang.MultiFn.invoke(MultiFn.java:251)
        at cljs.analyzer$analyze_seq_STAR_.invokeStatic(analyzer.cljc:2709)
        at cljs.analyzer$analyze_seq_STAR_.invoke(analyzer.cljc:2707)
        at cljs.analyzer$analyze_seq_STAR__wrap.invokeStatic(analyzer.cljc:2714)
        at cljs.analyzer$analyze_seq_STAR__wrap.invoke(analyzer.cljc:2712)
        at cljs.analyzer$analyze_seq.invokeStatic(analyzer.cljc:2735)
        at cljs.analyzer$analyze_seq.invoke(analyzer.cljc:2716)
        at cljs.analyzer$analyze_form.invokeStatic(analyzer.cljc:2853)
        at cljs.analyzer$analyze_form.invoke(analyzer.cljc:2849)
        at cljs.analyzer$analyze_STAR_.invokeStatic(analyzer.cljc:2900)
        at cljs.analyzer$analyze_STAR_.invoke(analyzer.cljc:2891)
        at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:2916)
        at cljs.analyzer$analyze.invoke(analyzer.cljc:2903)
        at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:2911)
        at cljs.analyzer$analyze.invoke(analyzer.cljc:2903)
        at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:2910)
        at cljs.analyzer$analyze.invoke(analyzer.cljc:2903)
        at cljs.analyzer$analyze_let_body_STAR_.invokeStatic(analyzer.cljc:1566)
        at cljs.analyzer$analyze_let_body_STAR_.invoke(analyzer.cljc:1565)
        at cljs.analyzer$analyze_let_body.invokeStatic(analyzer.cljc:1571)
        at cljs.analyzer$analyze_let_body.invoke(analyzer.cljc:1568)
        at cljs.analyzer$analyze_let.invokeStatic(analyzer.cljc:1587)
        at cljs.analyzer$analyze_let.invoke(analyzer.cljc:1573)
        at cljs.analyzer$eval1729$fn__1730.invoke(analyzer.cljc:1603)
        at clojure.lang.MultiFn.invoke(MultiFn.java:251)
        at cljs.analyzer$analyze_seq_STAR_.invokeStatic(analyzer.cljc:2709)
        at cljs.analyzer$analyze_seq_STAR_.invoke(analyzer.cljc:2707)
        at cljs.analyzer$analyze_seq_STAR__wrap.invokeStatic(analyzer.cljc:2714)
        at cljs.analyzer$analyze_seq_STAR__wrap.invoke(analyzer.cljc:2712)
        at cljs.analyzer$analyze_seq.invokeStatic(analyzer.cljc:2735)
        at cljs.analyzer$analyze_seq.invoke(analyzer.cljc:2716)
        at cljs.analyzer$analyze_form.invokeStatic(analyzer.cljc:2853)
        at cljs.analyzer$analyze_form.invoke(analyzer.cljc:2849)
        at cljs.analyzer$analyze_STAR_.invokeStatic(analyzer.cljc:2900)
        at cljs.analyzer$analyze_STAR_.invoke(analyzer.cljc:2891)
        at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:2916)
        at cljs.analyzer$analyze.invoke(analyzer.cljc:2903)
        at cljs.analyzer$analyze_seq.invokeStatic(analyzer.cljc:2736)
        at cljs.analyzer$analyze_seq.invoke(analyzer.cljc:2716)
        at cljs.analyzer$analyze_form.invokeStatic(analyzer.cljc:2853)
        at cljs.analyzer$analyze_form.invoke(analyzer.cljc:2849)
        at cljs.analyzer$analyze_STAR_.invokeStatic(analyzer.cljc:2900)
        at cljs.analyzer$analyze_STAR_.invoke(analyzer.cljc:2891)
        at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:2916)
        at cljs.analyzer$analyze.invoke(analyzer.cljc:2903)
        at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:2911)
        at cljs.analyzer$analyze.invoke(analyzer.cljc:2903)
        at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:2910)
        at cljs.analyzer$analyze.invoke(analyzer.cljc:2903)
        at cljs.analyzer$eval1546$fn__1548$fn__1554.invoke(analyzer.cljc:1042)
        at cljs.analyzer$eval1546$fn__1548.invoke(analyzer.cljc:1042)
        at clojure.lang.MultiFn.invoke(MultiFn.java:251)
        at cljs.analyzer$analyze_seq_STAR_.invokeStatic(analyzer.cljc:2709)
        at cljs.analyzer$analyze_seq_STAR_.invoke(analyzer.cljc:2707)
        at cljs.analyzer$analyze_seq_STAR__wrap.invokeStatic(analyzer.cljc:2714)
        at cljs.analyzer$analyze_seq_STAR__wrap.invoke(analyzer.cljc:2712)
        at cljs.analyzer$analyze_seq.invokeStatic(analyzer.cljc:2735)
        at cljs.analyzer$analyze_seq.invoke(analyzer.cljc:2716)
        at cljs.analyzer$analyze_form.invokeStatic(analyzer.cljc:2853)
        at cljs.analyzer$analyze_form.invoke(analyzer.cljc:2849)
        at cljs.analyzer$analyze_STAR_.invokeStatic(analyzer.cljc:2900)
        at cljs.analyzer$analyze_STAR_.invoke(analyzer.cljc:2891)
        at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:2916)
        at cljs.analyzer$analyze.invoke(analyzer.cljc:2903)
        at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:2911)
        at cljs.analyzer$analyze.invoke(analyzer.cljc:2903)
        at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:2910)
        at cljs.analyzer$analyze.invoke(analyzer.cljc:2903)
        at cljs.analyzer$eval1546$fn__1548$fn__1552.invoke(analyzer.cljc:1041)
        at cljs.analyzer$eval1546$fn__1548.invoke(analyzer.cljc:1041)
        at clojure.lang.MultiFn.invoke(MultiFn.java:251)
        at cljs.analyzer$analyze_seq_STAR_.invokeStatic(analyzer.cljc:2709)
        at cljs.analyzer$analyze_seq_STAR_.invoke(analyzer.cljc:2707)
        at cljs.analyzer$analyze_seq_STAR__wrap.invokeStatic(analyzer.cljc:2714)
        at cljs.analyzer$analyze_seq_STAR__wrap.invoke(analyzer.cljc:2712)
        at cljs.analyzer$analyze_seq.invokeStatic(analyzer.cljc:2735)
        at cljs.analyzer$analyze_seq.invoke(analyzer.cljc:2716)
        at cljs.analyzer$analyze_form.invokeStatic(analyzer.cljc:2853)
        at cljs.analyzer$analyze_form.invoke(analyzer.cljc:2849)
        at cljs.analyzer$analyze_STAR_.invokeStatic(analyzer.cljc:2900)
        at cljs.analyzer$analyze_STAR_.invoke(analyzer.cljc:2891)
        at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:2916)
        at cljs.analyzer$analyze.invoke(analyzer.cljc:2903)
        at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:2911)
        at cljs.analyzer$analyze.invoke(analyzer.cljc:2903)
        at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:2910)
        at cljs.analyzer$analyze.invoke(analyzer.cljc:2903)
        at cljs.analyzer$eval1706$fn__1708.invoke(analyzer.cljc:1489)
        at clojure.lang.MultiFn.invoke(MultiFn.java:251)
        at cljs.analyzer$analyze_seq_STAR_.invokeStatic(analyzer.cljc:2709)
        at cljs.analyzer$analyze_seq_STAR_.invoke(analyzer.cljc:2707)
        at cljs.analyzer$analyze_seq_STAR__wrap.invokeStatic(analyzer.cljc:2714)
        at cljs.analyzer$analyze_seq_STAR__wrap.invoke(analyzer.cljc:2712)
        at cljs.analyzer$analyze_seq.invokeStatic(analyzer.cljc:2735)
        at cljs.analyzer$analyze_seq.invoke(analyzer.cljc:2716)
        at cljs.analyzer$analyze_form.invokeStatic(analyzer.cljc:2853)
        at cljs.analyzer$analyze_form.invoke(analyzer.cljc:2849)
        at cljs.analyzer$analyze_STAR_.invokeStatic(analyzer.cljc:2900)
        at cljs.analyzer$analyze_STAR_.invoke(analyzer.cljc:2891)
        at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:2916)
        at cljs.analyzer$analyze.invoke(analyzer.cljc:2903)
        at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:2911)
        at cljs.analyzer$analyze.invoke(analyzer.cljc:2903)
        at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:2910)
        at cljs.analyzer$analyze.invoke(analyzer.cljc:2903)
        at cljs.analyzer$analyze_fn_method_body.invokeStatic(analyzer.cljc:1308)
        at cljs.analyzer$analyze_fn_method_body.invoke(analyzer.cljc:1306)
        at cljs.analyzer$analyze_fn_method.invokeStatic(analyzer.cljc:1326)
        at cljs.analyzer$analyze_fn_method.invoke(analyzer.cljc:1310)
        at cljs.analyzer$eval1667$fn__1669$fn__1672.invoke(analyzer.cljc:1390)
        at clojure.core$map$fn__4785.invoke(core.clj:2646)
        at clojure.lang.LazySeq.sval(LazySeq.java:40)
        at clojure.lang.LazySeq.seq(LazySeq.java:49)
        at clojure.lang.RT.seq(RT.java:521)
        at clojure.core$seq__4357.invokeStatic(core.clj:137)
        at clojure.core$map$fn__4785.invoke(core.clj:2637)
        at clojure.lang.LazySeq.sval(LazySeq.java:40)
        at clojure.lang.LazySeq.seq(LazySeq.java:49)
        at clojure.lang.RT.seq(RT.java:521)
        at clojure.core$seq__4357.invokeStatic(core.clj:137)
        at clojure.core$apply.invokeStatic(core.clj:641)
        at clojure.core$apply.invoke(core.clj:641)
        at cljs.analyzer$eval1667$fn__1669.invoke(analyzer.cljc:1391)
        at clojure.lang.MultiFn.invoke(MultiFn.java:251)
        at cljs.analyzer$analyze_seq_STAR_.invokeStatic(analyzer.cljc:2709)
        at cljs.analyzer$analyze_seq_STAR_.invoke(analyzer.cljc:2707)
        at cljs.analyzer$analyze_seq_STAR__wrap.invokeStatic(analyzer.cljc:2714)
        at cljs.analyzer$analyze_seq_STAR__wrap.invoke(analyzer.cljc:2712)
        at cljs.analyzer$analyze_seq.invokeStatic(analyzer.cljc:2735)
        at cljs.analyzer$analyze_seq.invoke(analyzer.cljc:2716)
        at cljs.analyzer$analyze_form.invokeStatic(analyzer.cljc:2853)
        at cljs.analyzer$analyze_form.invoke(analyzer.cljc:2849)
        at cljs.analyzer$analyze_STAR_.invokeStatic(analyzer.cljc:2900)
        at cljs.analyzer$analyze_STAR_.invoke(analyzer.cljc:2891)
        at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:2916)
        at cljs.analyzer$analyze.invoke(analyzer.cljc:2903)
        at cljs.analyzer$analyze_seq.invokeStatic(analyzer.cljc:2736)
        at cljs.analyzer$analyze_seq.invoke(analyzer.cljc:2716)
        at cljs.analyzer$analyze_form.invokeStatic(analyzer.cljc:2853)
        at cljs.analyzer$analyze_form.invoke(analyzer.cljc:2849)
        at cljs.analyzer$analyze_STAR_.invokeStatic(analyzer.cljc:2900)
        at cljs.analyzer$analyze_STAR_.invoke(analyzer.cljc:2891)
        at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:2916)
        at cljs.analyzer$analyze.invoke(analyzer.cljc:2903)
        at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:2911)
        at cljs.analyzer$analyze.invoke(analyzer.cljc:2903)
        at cljs.analyzer$eval1619$fn__1620$fn__1623.invoke(analyzer.cljc:1199)
        at cljs.analyzer$eval1619$fn__1620.invoke(analyzer.cljc:1198)
        at clojure.lang.MultiFn.invoke(MultiFn.java:251)
        at cljs.analyzer$analyze_seq_STAR_.invokeStatic(analyzer.cljc:2709)
        at cljs.analyzer$analyze_seq_STAR_.invoke(analyzer.cljc:2707)
        at cljs.analyzer$analyze_seq_STAR__wrap.invokeStatic(analyzer.cljc:2714)
        at cljs.analyzer$analyze_seq_STAR__wrap.invoke(analyzer.cljc:2712)
        at cljs.analyzer$analyze_seq.invokeStatic(analyzer.cljc:2735)
        at cljs.analyzer$analyze_seq.invoke(analyzer.cljc:2716)
        at cljs.analyzer$analyze_form.invokeStatic(analyzer.cljc:2853)
        at cljs.analyzer$analyze_form.invoke(analyzer.cljc:2849)
        at cljs.analyzer$analyze_STAR_.invokeStatic(analyzer.cljc:2900)
        at cljs.analyzer$analyze_STAR_.invoke(analyzer.cljc:2891)
        at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:2916)
        at cljs.analyzer$analyze.invoke(analyzer.cljc:2903)
        at cljs.analyzer$analyze_seq.invokeStatic(analyzer.cljc:2736)
        at cljs.analyzer$analyze_seq.invoke(analyzer.cljc:2716)
        at cljs.analyzer$analyze_form.invokeStatic(analyzer.cljc:2853)
        at cljs.analyzer$analyze_form.invoke(analyzer.cljc:2849)
        at cljs.analyzer$analyze_STAR_.invokeStatic(analyzer.cljc:2900)
        at cljs.analyzer$analyze_STAR_.invoke(analyzer.cljc:2891)
        at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:2916)
        at cljs.analyzer$analyze.invoke(analyzer.cljc:2903)
        at cljs.compiler$emit_source.invokeStatic(compiler.cljc:1252)
        at cljs.compiler$emit_source.invoke(compiler.cljc:1232)
        at cljs.compiler$compile_file_STAR_$fn__3530.invoke(compiler.cljc:1304)
        at cljs.compiler$with_core_cljs.invokeStatic(compiler.cljc:1154)
        at cljs.compiler$with_core_cljs.invoke(compiler.cljc:1145)
        at cljs.compiler$compile_file_STAR_.invokeStatic(compiler.cljc:1293)
        at cljs.compiler$compile_file_STAR_.invoke(compiler.cljc:1289)
        at cljs.compiler$compile_file$fn__3553.invoke(compiler.cljc:1374)
        ... 60 more
Caused by: clojure.lang.ArityException: Wrong number of args (1) passed to: nodes/ranges
        at cljs.analyzer$macroexpand_1_STAR_$fn__2179.invoke(analyzer.cljc:2658)
        at cljs.analyzer$macroexpand_1_STAR_.invokeStatic(analyzer.cljc:2655)
        at cljs.analyzer$macroexpand_1_STAR_.invoke(analyzer.cljc:2640)
        ... 324 more
Subprocess failed
brandonbloom commented 7 years ago

Hmm... a very cursory look suggests that there's both a 1-arity ranges function and 2-arity ranges macro. Maybe this is a ClojureScript bug in the newer versions that support automatically importing macros from the same namespace?

alexandergunnarson commented 7 years ago

I don't quite remember the issue, but it's related to what you're talking about, @brandonbloom . I had to fork rrb-vector, apply the necessary fixes, and release the working result to clojars as [quantum/org.clojure.core.rrb-vector "0.0.12"]. Feel free to use it if you'd like @jaor — it compiles and behaves as expected for both CLJ and CLJS.

jaor commented 7 years ago

thanks alex, i'll give it a try as soon as i can!

alexandergunnarson commented 7 years ago

No problem! Let me know how it goes.

rafd commented 7 years ago

I ran into this issue as well. I was able to make my build work by excluding rrb-vector from fipp and using @alexandergunnarson 's version:

[fipp "0.6.6" :exclusions [org.clojure/core.rrb-vector]]
[quantum/org.clojure.core.rrb-vector "0.0.12"]]
stuartsierra commented 7 years ago

rrb-vector issue is at https://dev.clojure.org/jira/browse/CRRBV-15, currently lacks a reproducible case.

brandonbloom commented 7 years ago

@alexandergunnarson Is the code available for your quantum/... build anywhere? If it's a small patch, you can just paste it here too.

alexandergunnarson commented 7 years ago

@brandonbloom My fork is here. Only the changes made to the .cljs files are relevant — it was a simple naming conflict that caused issues in CLJS. You can see the diff here. There is possibly a cleaner fix that involves fewer changes to code, but this is what I have so far, and it works.

brandonbloom commented 7 years ago

OK, I'm reasonably convinced that this should be fixed in cljs-build, not in rrb-vector or fipp. Maaaybe something in cljs itself.

alexandergunnarson commented 7 years ago

I tentatively agree. Definitely not an issue with fipp either way.

brandonbloom commented 7 years ago

OK, tracking over there: https://github.com/emezeske/lein-cljsbuild/issues/469

alexandergunnarson commented 7 years ago

Sounds good @brandonbloom!