欢迎!请参阅 关于 页面以了解更多关于这是如何工作的信息。
评论由:chancerussell
为对工单的Markdown格式造成混乱表示歉意——我以为提交后会将其清理干净。
评论由:mfikes
CLJS-3056.patch通过了CI和Canary测试(/)
评论由:thheller
附带的补丁仍然使用{{deps}}映射,它只会在达到数组映射阈值之前保持插入顺序,一旦开始使用哈希映射,顺序将不再。在shadow-cljs中,我通过保持除{{:requires}}映射之外的附加{{:deps}}向量来处理此问题。
看起来分析器解析'ns和'ns**已经维护了一个{{:deps}}向量。只需要在cljs.compiler/emit-source函数中使用它,而不是取requires/uses映射的vals值。
托马斯是对的,{{:deps}}向量存在,且顺序符合预期,因此我已提交一个新的补丁,该补丁使用该向量。
一个问题——当{{cljs.core}}和{{cljs.core.constants}}都存在时,它们的排序应该如何?很明显,前一段代码的排序是不确定的,但我想确保这一点。
(测试test-cljs-1882-constants-table-is-sorted似乎表明cljs.core应该排在第一位。)
2019年3月24日 12:58 PM的CLJS-3056.patch通过了CI和Canary测试 (/)
评论人:dnolen
{{cljs.core}}必须在{{cljs.core.constants}}之前,因为如果不定义关键字结构,{{cljs.core.constants}}将无法工作。否则,我们肯定会听到很多关于高级构建失败的抱怨,从而确保排序是正确的。
David,当你说“排序肯定是有保证的”,你是指{{cljs.core}}和{{cljs.core.constants}},还是整个依赖?当前的代码是在集合上使用{{conj}},这不一定能保持任何顺序,据我所知。
哦,我弄错了:CLJS-3056.patch在Windows CI上失败(×)
特别是,它导致在{{cljs-2077-test-loader}}中发生堆栈溢出
ERROR在(cljs-2077-test-loader) (core.clj:6077) 397未捕获的异常,不在断言中。 398预期值:nil 399实际值:java.lang.StackOverflowError: null 400在clojure.core$get_in.invokeStatic (core.clj:6077) 401 cljs.module_graph$deps_for.invokeStatic (module_graph.cljc:147) 402 cljs.module_graph$deps_for.invoke (module_graph.cljc:147) 403 clojure.lang.AFn.applyToHelper (AFn.java:160) 404 clojure.lang.AFn.applyTo (AFn.java:144) 405 clojure.core$apply.invokeStatic (core.clj:657) 406 clojure.core$memoize$fn__6665.doInvoke (core.clj:6288) 407 clojure.lang.RestFn.invoke (RestFn.java:436) 408 cljs.module_graph$deps_for$fn__7089.invoke (module_graph.cljc:151) 409 clojure.core$map$fn__5665.invoke (core.clj:2745) 410 clojure.lang.LazySeq.sval (LazySeq.java:40) 411 clojure.lang.LazySeq.seq (LazySeq.java:49) 412 clojure.lang.RT.seq (RT.java:528) 413 clojure.core$seq__5202.invokeStatic (core.clj:137) 414 clojure.core$apply.invokeStatic (core.clj:652) 415 clojure.core$mapcat.invokeStatic (core.clj:2775) 416 cljs.module_graph$deps_for.invokeStatic (module_graph.cljc:147) 417 cljs.module_graph$deps_for.invoke (module_graph.cljc:147) 418 clojure.lang.AFn.applyToHelper (AFn.java:160) 419 clojure.lang.AFn.applyTo (AFn.java:144) 420 clojure.core$apply.invokeStatic (core.clj:657)
CI构建: https://ci.appveyor.com/project/mfikes/clojurescript/builds/24478525