sorry my English is poor, but need help, thanks ^_^
after updated to 1.9.189 , I wrote this:
(require '[cljs.spec :as s])
(s/def ::a1 int?)
(s/def ::a2 int?)
(s/def ::all (s/merge (s/keys :opt-un [::a1]) (s/keys :opt-un [::a2])))
I got:
clojure.lang.ExceptionInfo: Wrong number of args (-1) passed to: spec/res at
line 1 <cljs repl> {:file "<cljs repl>", :line 1, :column 14, :root-source-info
{:source-type :fragment, :source-form (s/def :cljs.user/all (s/merge (s/keys
:opt-un [:cljs.user/a1]) (s/keys :opt-un [:cljs.user/a2])))}, :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:2688)
at cljs.analyzer$macroexpand_1.invoke(analyzer.cljc:2684)
at cljs.analyzer$analyze_seq.invokeStatic(analyzer.cljc:2718)
at cljs.analyzer$analyze_seq.invoke(analyzer.cljc:2701)
at cljs.analyzer$analyze_form.invokeStatic(analyzer.cljc:2838)
at cljs.analyzer$analyze_form.invoke(analyzer.cljc:2834)
at cljs.analyzer$analyze_STAR_.invokeStatic(analyzer.cljc:2885)
at cljs.analyzer$analyze_STAR_.invoke(analyzer.cljc:2876)
at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:2901)
at cljs.analyzer$analyze.invoke(analyzer.cljc:2888)
at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:2896)
at cljs.analyzer$analyze.invoke(analyzer.cljc:2888)
at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:2895)
at cljs.analyzer$analyze.invoke(analyzer.cljc:2888)
at
cljs.analyzer$parse_invoke_STAR_$ana_expr__3134.invoke(analyzer.cljc:2520)
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.Cons.next(Cons.java:39)
at clojure.lang.PersistentVector.create(PersistentVector.java:73)
at
clojure.lang.LazilyPersistentVector.create(LazilyPersistentVector.java:44)
at clojure.core$vec.invokeStatic(core.clj:377)
at clojure.core$vec.invoke(core.clj:367)
at cljs.analyzer$parse_invoke_STAR_.invokeStatic(analyzer.cljc:2522)
at cljs.analyzer$parse_invoke_STAR_.invoke(analyzer.cljc:2493)
at cljs.analyzer$parse_invoke.invokeStatic(analyzer.cljc:2531)
at cljs.analyzer$parse_invoke.invoke(analyzer.cljc:2529)
at cljs.analyzer$analyze_seq_STAR_.invokeStatic(analyzer.cljc:2695)
at cljs.analyzer$analyze_seq_STAR_.invoke(analyzer.cljc:2692)
at cljs.analyzer$analyze_seq_STAR__wrap.invokeStatic(analyzer.cljc:2699)
at cljs.analyzer$analyze_seq_STAR__wrap.invoke(analyzer.cljc:2697)
at cljs.analyzer$analyze_seq.invokeStatic(analyzer.cljc:2720)
at cljs.analyzer$analyze_seq.invoke(analyzer.cljc:2701)
at cljs.analyzer$analyze_form.invokeStatic(analyzer.cljc:2838)
at cljs.analyzer$analyze_form.invoke(analyzer.cljc:2834)
at cljs.analyzer$analyze_STAR_.invokeStatic(analyzer.cljc:2885)
at cljs.analyzer$analyze_STAR_.invoke(analyzer.cljc:2876)
at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:2901)
at cljs.analyzer$analyze.invoke(analyzer.cljc:2888)
at cljs.analyzer$analyze_seq.invokeStatic(analyzer.cljc:2721)
at cljs.analyzer$analyze_seq.invoke(analyzer.cljc:2701)
at cljs.analyzer$analyze_form.invokeStatic(analyzer.cljc:2838)
at cljs.analyzer$analyze_form.invoke(analyzer.cljc:2834)
at cljs.analyzer$analyze_STAR_.invokeStatic(analyzer.cljc:2885)
at cljs.analyzer$analyze_STAR_.invoke(analyzer.cljc:2876)
at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:2901)
at cljs.analyzer$analyze.invoke(analyzer.cljc:2888)
at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:2896)
at cljs.analyzer$analyze.invoke(analyzer.cljc:2888)
at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:2895)
at cljs.analyzer$analyze.invoke(analyzer.cljc:2888)
at
cljs.analyzer$analyze_let_binding_init.invokeStatic(analyzer.cljc:1496)
at cljs.analyzer$analyze_let_binding_init.invoke(analyzer.cljc:1494)
at
cljs.analyzer$analyze_let_bindings_STAR_.invokeStatic(analyzer.cljc:1518)
at cljs.analyzer$analyze_let_bindings_STAR_.invoke(analyzer.cljc:1507)
at cljs.analyzer$analyze_let_bindings.invokeStatic(analyzer.cljc:1549)
at cljs.analyzer$analyze_let_bindings.invoke(analyzer.cljc:1548)
at cljs.analyzer$analyze_let.invokeStatic(analyzer.cljc:1564)
at cljs.analyzer$analyze_let.invoke(analyzer.cljc:1559)
at cljs.analyzer$eval2707$fn__2708.invoke(analyzer.cljc:1585)
at clojure.lang.MultiFn.invoke(MultiFn.java:251)
at cljs.analyzer$analyze_seq_STAR_.invokeStatic(analyzer.cljc:2694)
at cljs.analyzer$analyze_seq_STAR_.invoke(analyzer.cljc:2692)
at cljs.analyzer$analyze_seq_STAR__wrap.invokeStatic(analyzer.cljc:2699)
at cljs.analyzer$analyze_seq_STAR__wrap.invoke(analyzer.cljc:2697)
at cljs.analyzer$analyze_seq.invokeStatic(analyzer.cljc:2720)
at cljs.analyzer$analyze_seq.invoke(analyzer.cljc:2701)
at cljs.analyzer$analyze_form.invokeStatic(analyzer.cljc:2838)
at cljs.analyzer$analyze_form.invoke(analyzer.cljc:2834)
at cljs.analyzer$analyze_STAR_.invokeStatic(analyzer.cljc:2885)
at cljs.analyzer$analyze_STAR_.invoke(analyzer.cljc:2876)
at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:2901)
at cljs.analyzer$analyze.invoke(analyzer.cljc:2888)
at cljs.analyzer$analyze_seq.invokeStatic(analyzer.cljc:2721)
at cljs.analyzer$analyze_seq.invoke(analyzer.cljc:2701)
at cljs.analyzer$analyze_form.invokeStatic(analyzer.cljc:2838)
at cljs.analyzer$analyze_form.invoke(analyzer.cljc:2834)
at cljs.analyzer$analyze_STAR_.invokeStatic(analyzer.cljc:2885)
at cljs.analyzer$analyze_STAR_.invoke(analyzer.cljc:2876)
at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:2901)
at cljs.analyzer$analyze.invoke(analyzer.cljc:2888)
at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:2896)
at cljs.analyzer$analyze.invoke(analyzer.cljc:2888)
at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:2895)
at cljs.analyzer$analyze.invoke(analyzer.cljc:2888)
at
cljs.analyzer$parse_invoke_STAR_$ana_expr__3134.invoke(analyzer.cljc:2520)
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.lang.LazilyPersistentVector.create(LazilyPersistentVector.java:44)
at clojure.core$vec.invokeStatic(core.clj:377)
at clojure.core$vec.invoke(core.clj:367)
at cljs.analyzer$parse_invoke_STAR_.invokeStatic(analyzer.cljc:2522)
at cljs.analyzer$parse_invoke_STAR_.invoke(analyzer.cljc:2493)
at cljs.analyzer$parse_invoke.invokeStatic(analyzer.cljc:2531)
at cljs.analyzer$parse_invoke.invoke(analyzer.cljc:2529)
at cljs.analyzer$analyze_seq_STAR_.invokeStatic(analyzer.cljc:2695)
at cljs.analyzer$analyze_seq_STAR_.invoke(analyzer.cljc:2692)
at cljs.analyzer$analyze_seq_STAR__wrap.invokeStatic(analyzer.cljc:2699)
at cljs.analyzer$analyze_seq_STAR__wrap.invoke(analyzer.cljc:2697)
at cljs.analyzer$analyze_seq.invokeStatic(analyzer.cljc:2720)
at cljs.analyzer$analyze_seq.invoke(analyzer.cljc:2701)
at cljs.analyzer$analyze_form.invokeStatic(analyzer.cljc:2838)
at cljs.analyzer$analyze_form.invoke(analyzer.cljc:2834)
at cljs.analyzer$analyze_STAR_.invokeStatic(analyzer.cljc:2885)
at cljs.analyzer$analyze_STAR_.invoke(analyzer.cljc:2876)
at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:2901)
at cljs.analyzer$analyze.invoke(analyzer.cljc:2888)
at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:2896)
at cljs.analyzer$analyze.invoke(analyzer.cljc:2888)
at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:2895)
at cljs.analyzer$analyze.invoke(analyzer.cljc:2888)
at cljs.analyzer$eval2688$fn__2690.invoke(analyzer.cljc:1475)
at clojure.lang.MultiFn.invoke(MultiFn.java:251)
at cljs.analyzer$analyze_seq_STAR_.invokeStatic(analyzer.cljc:2694)
at cljs.analyzer$analyze_seq_STAR_.invoke(analyzer.cljc:2692)
at cljs.analyzer$analyze_seq_STAR__wrap.invokeStatic(analyzer.cljc:2699)
at cljs.analyzer$analyze_seq_STAR__wrap.invoke(analyzer.cljc:2697)
at cljs.analyzer$analyze_seq.invokeStatic(analyzer.cljc:2720)
at cljs.analyzer$analyze_seq.invoke(analyzer.cljc:2701)
at cljs.analyzer$analyze_form.invokeStatic(analyzer.cljc:2838)
at cljs.analyzer$analyze_form.invoke(analyzer.cljc:2834)
at cljs.analyzer$analyze_STAR_.invokeStatic(analyzer.cljc:2885)
at cljs.analyzer$analyze_STAR_.invoke(analyzer.cljc:2876)
at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:2901)
at cljs.analyzer$analyze.invoke(analyzer.cljc:2888)
at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:2896)
at cljs.analyzer$analyze.invoke(analyzer.cljc:2888)
at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:2895)
cljs.user=> at cljs.analyzer$analyze.invoke(analyzer.cljc:2888)
at cljs.analyzer$eval2573$fn__2575.invoke(analyzer.cljc:1121)
at clojure.lang.MultiFn.invoke(MultiFn.java:251)
at cljs.analyzer$analyze_seq_STAR_.invokeStatic(analyzer.cljc:2694)
at cljs.analyzer$analyze_seq_STAR_.invoke(analyzer.cljc:2692)
at cljs.analyzer$analyze_seq_STAR__wrap.invokeStatic(analyzer.cljc:2699)
at cljs.analyzer$analyze_seq_STAR__wrap.invoke(analyzer.cljc:2697)
at cljs.analyzer$analyze_seq.invokeStatic(analyzer.cljc:2720)
at cljs.analyzer$analyze_seq.invoke(analyzer.cljc:2701)
at cljs.analyzer$analyze_form.invokeStatic(analyzer.cljc:2838)
at cljs.analyzer$analyze_form.invoke(analyzer.cljc:2834)
at cljs.analyzer$analyze_STAR_.invokeStatic(analyzer.cljc:2885)
at cljs.analyzer$analyze_STAR_.invoke(analyzer.cljc:2876)
at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:2901)
at cljs.analyzer$analyze.invoke(analyzer.cljc:2888)
at cljs.repl$evaluate_form$fn__7452.invoke(repl.cljc:484)
at cljs.repl$evaluate_form.invokeStatic(repl.cljc:483)
at cljs.repl$evaluate_form.invoke(repl.cljc:440)
at cljs.repl$eval_cljs.invokeStatic(repl.cljc:575)
at cljs.repl$eval_cljs.invoke(repl.cljc:568)
at cljs.repl$repl_STAR_$read_eval_print__7598.invoke(repl.cljc:921)
at cljs.repl$repl_STAR_$fn__7604$fn__7613.invoke(repl.cljc:960)
at cljs.repl$repl_STAR_$fn__7604.invoke(repl.cljc:959)
at cljs.compiler$with_core_cljs.invokeStatic(compiler.cljc:1154)
at cljs.compiler$with_core_cljs.invoke(compiler.cljc:1145)
at cljs.repl$repl_STAR_.invokeStatic(repl.cljc:923)
at cljs.repl$repl_STAR_.invoke(repl.cljc:806)
at cemerick.piggieback$run_cljs_repl.invokeStatic(piggieback.clj:169)
at cemerick.piggieback$run_cljs_repl.invoke(piggieback.clj:155)
at clojure.lang.AFn.applyToHelper(AFn.java:171)
at clojure.lang.AFn.applyTo(AFn.java:144)
at clojure.core$apply.invokeStatic(core.clj:650)
at clojure.core$apply.invoke(core.clj:641)
at cemerick.piggieback$evaluate.invokeStatic(piggieback.clj:258)
at cemerick.piggieback$evaluate.invoke(piggieback.clj:254)
at clojure.lang.Var.invoke(Var.java:379)
at
cemerick.piggieback$wrap_cljs_repl$fn__33010$fn__33012$fn__33013.invoke(piggieback.clj:290)
at cemerick.piggieback$enqueue$fn__32996.invoke(piggieback.clj:246)
at
clojure.tools.nrepl.middleware.interruptible_eval$run_next$fn__15308.invoke(interruptible_eval.clj:190)
at clojure.lang.AFn.run(AFn.java:22)
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)
Caused by: clojure.lang.ArityException: Wrong number of args (-1) passed to:
spec/res
at cljs.analyzer$macroexpand_1_STAR_$fn__3161.invoke(analyzer.cljc:2643)
at cljs.analyzer$macroexpand_1_STAR_.invokeStatic(analyzer.cljc:2640)
at cljs.analyzer$macroexpand_1_STAR_.invoke(analyzer.cljc:2625)
... 173 more
Is this a bug?
在 2016年8月13日星期六 UTC+8上午3:50:20,David Nolen写道:
> ClojureScript, the Clojure compiler that emits JavaScript source code.
>
>
> README and source code: https://github.com/clojure/clojurescript
>
>
> Leiningen dependency information:
>
>
> [org.clojure/clojurescript "1.9.198"]
>
>
> This release brings cljs.spec to parity with Clojure
> 1.9.0-alpha10. This release also includes a large number of
> enhancements to the ns form:
>
>
> * :refer now features macro inference. There is no longer any need
> to supply both :refer and :refer-macros in the same :require, the
> compiler will figure it out.
>
>
> * clojure.* namespaces will now automatically be aliased to their
> ClojureScript equivalents. For example this means that the following
> is perfectly valid ClojureScript:
>
>
> (ns foo.bar
> (:require [clojure.spec :refer [fspec]]))
>
>
> This feature and the previous one should significantly reduce reader
> conditional usage in ns forms.
>
>
> * thanks to Antonio Monteiro we now support :rename
>
>
> We also have a new feature that is relevant for tooling such as
> Figwheel and cljs-devtools - :preloads. This should now be the
> standard way to inject some bit of side-effecting setup after core but
> before user code (i.e. connecting REPLs to standard ports, etc.).
>
>
> There are of course many various small fixes and enhancements, so
> a very big thank you to everyone that has contributed.
>
>
> As always feedback welcome!
>
>
> ## 1.9.198
>
>
> ### Enhancements
> * CLJS-1508: Extend ns form to support :rename option
> * CLJS-1507: Implicit macro loading: macro var inference in :refer
> * CLJS-1692: Autoalias clojure.* to exisiting cljs.* namespaces if
> possible
> * CLJS-1350: Compiler support for browser REPL
> * CLJS-1729: Support `use` special function in REPLs
> * CLJS-1730: Support `refer-clojure` special function in REPLs
>
>
> ### Changes
> * CLJS-1515: Self-host: Allow :file key in cljs.js/*load-fn*
> * add toString implementation to Vars
> * Use a js array to create collections in cljs.reader
> * CLJS-1640: Use the unshaded version of the closure compiler
> * add :browser-repl to list of known opts
> * add browser REPL preload
> * parity with Clojure 1.9.0-alpha10 clojure.spec
> * bump to tools.reader 1.0.0-beta3
>
>
> ### Fixes
> * CLJS-1733: Macro inference issue for macros & runtime vars with the same
> name
> * CLJS-1735: Self-host: cljs.spec speced-vars instance
> * CLJS-1736: cljs.spec.test: checkable-syms* called with 0-arity
> * CLJS-1708: Self-host: [iu]nstrument-1 needs to qualify [iu]nstrument-1*
> * CLJS-1707: Self-host: with-instrument-disabled needs to qualify
> *instrument-enabled*
> * CLJS-1732: Add docstrings for new use and use-macros REPL specials
> * CLJS-1720: Qualify symbols and namespaced keywords in spec macros
> * CLJS-1731: Self-host: do_template problem with script/test-self-parity
> * CLJS-1556: Invalid code emit for obj literal
> * CLJS-1607: bug with `specify!` in JS prototypes with `static-fns` true
> * CLJS-1591 avoid analyzing invoke arguments multiple times
> * CLJS-1638: :elide-asserts disables atom validators in :advanced
> * CLJS-1721: 3-arity get-in fails on types which do not implement ILookup
> * CLJS-1728: Update doc for ns for new :rename capability
> * CLJS-1727: Regression when evaluating non-sequential forms at the REPL
> * CLJS-1490: Watch macro files in cljs.build.api/watch
> * CLJS-1719: Port destructuring namespaced keys and symbols
> * CLJS-1653: cljs.spec: keys* causes exception
> * CLJS-1700: Support clojure.* aliasing when not in vector
> * CLJS-1717 remove map from equiv-map
> * CLJS-1716: No longer possible to use same alias for :require-macros and
> :require
> * Use keyword options in js->clj 1-arg impl
> * Add support for regex in transit for compiler analysis cache
> * Escape non-Latin1 characters before base64 encoding the source-map string
> * CLJS-1698: cljs.spec: every res call needs &env
> * CLJS-1695: Self-host: Port cljs / clojure namespace aliasing
> * CLJS-1697: doc on inferred macros fails
> * CLJS-1699: Update docstring for ns
> * CLJS-1694: Self-host: Port macro var inference in :refer
--
Note that posts from new members are moderated - please be patient with your
first post.
---
You received this message because you are subscribed to the Google Groups
"ClojureScript" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/clojurescript.