taoensso / encore

Core utils library for Clojure/Script
https://www.taoensso.com/encore
Eclipse Public License 1.0
274 stars 52 forks source link

Not compatible with clojurescript 1.9.216 #31

Closed ul closed 8 years ago

ul commented 8 years ago

CLJS 1.8.51 goes fine, but 1.9.216 throw an error:

lein figwheel

----  Could not Analyze  resources/public/js/compiled/out/taoensso/encore.cljs   line:260  column:1  ----

  contains? not supported on type: clojure.lang.PersistentList

  258  (defn   nblank? [x] (not (str/blank? x)))
  259  (defn     nneg? [x] (not (neg? x)))
  260  (defn  pos-int? [x] (and (integer? x) (pos? x)))
       ^--- contains? not supported on type: clojure.lang.PersistentList
  261  (defn nneg-int? [x] (and (integer? x) (not (neg? x))))
  262  (defn   nvec? [n x] (and (vector?  x) (= (count x) n)))

----  Analysis Error : Please see resources/public/js/compiled/out/taoensso/encore.cljs  ----

lein cljsbuild once

clojure.lang.ExceptionInfo: failed compiling file:resources/public/js/compiled/out/taoensso/encore.cljs {:file #object[java.io.File 0x3afbd1fd "resources/public/js/compiled/out/taoensso/encore.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__3558.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$eval5305$fn__5306.invoke(closure.clj:541)
    at cljs.closure$eval5241$fn__5242$G__5230__5249.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$eval5311$fn__5312.invoke(closure.clj:551)
    at cljs.closure$eval5241$fn__5242$G__5230__5249.invoke(closure.clj:431)
    at cljs.closure$compile_sources$iter__5426__5430$fn__5431.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__5965.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$eval6102$iter__6138__6142$fn__6143$fn__6161.invoke(form-init8002327113479587368.clj:1)
    at user$eval6102$iter__6138__6142$fn__6143.invoke(form-init8002327113479587368.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$eval6102.invokeStatic(form-init8002327113479587368.clj:1)
    at user$eval6102.invoke(form-init8002327113479587368.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: contains? not supported on type: clojure.lang.PersistentList at line 260 resources/public/js/compiled/out/taoensso/encore.cljs {:file "resources/public/js/compiled/out/taoensso/encore.cljs", :line 260, :column 1, :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$analyze_seq_STAR__wrap.invokeStatic(analyzer.cljc:2712)
    at cljs.analyzer$analyze_seq_STAR__wrap.invoke(analyzer.cljc:2711)
    at cljs.analyzer$analyze_seq.invokeStatic(analyzer.cljc:2734)
    at cljs.analyzer$analyze_seq.invoke(analyzer.cljc:2715)
    at cljs.analyzer$analyze_form.invokeStatic(analyzer.cljc:2852)
    at cljs.analyzer$analyze_form.invoke(analyzer.cljc:2848)
    at cljs.analyzer$analyze_STAR_.invokeStatic(analyzer.cljc:2899)
    at cljs.analyzer$analyze_STAR_.invoke(analyzer.cljc:2890)
    at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:2915)
    at cljs.analyzer$analyze.invoke(analyzer.cljc:2902)
    at cljs.analyzer$analyze_seq.invokeStatic(analyzer.cljc:2735)
    at cljs.analyzer$analyze_seq.invoke(analyzer.cljc:2715)
    at cljs.analyzer$analyze_form.invokeStatic(analyzer.cljc:2852)
    at cljs.analyzer$analyze_form.invoke(analyzer.cljc:2848)
    at cljs.analyzer$analyze_STAR_.invokeStatic(analyzer.cljc:2899)
    at cljs.analyzer$analyze_STAR_.invoke(analyzer.cljc:2890)
    at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:2915)
    at cljs.analyzer$analyze.invoke(analyzer.cljc:2902)
    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__3535.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__3558.invoke(compiler.cljc:1374)
    ... 60 more
Caused by: java.lang.IllegalArgumentException: contains? not supported on type: clojure.lang.PersistentList
    at clojure.lang.RT.contains(RT.java:814)
    at clojure.core$contains_QMARK_.invokeStatic(core.clj:1443)
    at clojure.core$contains_QMARK_.invoke(core.clj:1435)
    at cljs.analyzer$core_name_QMARK_.invokeStatic(analyzer.cljc:729)
    at cljs.analyzer$core_name_QMARK_.invoke(analyzer.cljc:721)
    at cljs.analyzer$resolve_var.invokeStatic(analyzer.cljc:806)
    at cljs.analyzer$resolve_var.invoke(analyzer.cljc:731)
    at cljs.analyzer$resolve_var.invokeStatic(analyzer.cljc:734)
    at cljs.analyzer$resolve_var.invoke(analyzer.cljc:731)
    at cljs.analyzer$eval1627$fn__1628.invoke(analyzer.cljc:1190)
    at clojure.lang.MultiFn.invoke(MultiFn.java:251)
    at cljs.analyzer$analyze_seq_STAR_.invokeStatic(analyzer.cljc:2708)
    at cljs.analyzer$analyze_seq_STAR_.invoke(analyzer.cljc:2706)
    at cljs.analyzer$analyze_seq_STAR__wrap.invokeStatic(analyzer.cljc:2713)
    ... 85 more
Subprocess failed```
ptaoussanis commented 8 years ago

Hi there,

Just built with clojurescript 1.9.216 on my end without a problem (don't use figwheel).

Also, that error seems fishy/confused - not sure what's responsible for generating it, but might suggest looking there for possible problems?

The fact that an error is being generated at the definition of pos-int? seems to suggest that this might be a namespace conflict with the pos-int? fn that was introduced into Clojure 1.9 alpha's clojure.core ns.

But encore already does (:refer-clojure :exclude [pos-int?]), so this shouldn't be a problem.

I'll note that I've had a few reports of issues with Clojure 1.9 alpha against encore precisely because of this namespace conflict, but I haven't been able to reproduce the problem on my end. All issues I've seen first-hand were cases of dependency conflicts or stale build artifacts.

If you're convinced your deps are unconflicted and up-to-date, the next step to debug this would be for someone seeing the problem to upload a reproducible project somewhere and to start eliminating possible causes (e.g. figwheel or other tooling).

ul commented 8 years ago

I've figured out that I used [com.taoensso/tower "3.1.0-beta4"] and thus not the latest version of encore was pulled as a transitive dependency. Upgrading deps solved the problem. Sorry for the noise and thank you for great libraries!

ptaoussanis commented 8 years ago

No problem, thanks for the confirmation - cheers!