2024 年 Clojure 状态调查! 中分享您的想法。

欢迎!请查看 关于 页面以获取更多关于这个平台如何工作的信息。

0
core.async

随着 ASYNC-171,{{bounded-count}} 被排除。但实际上,它在 {{cljs.core.async/to-chan}} 这儿被使用了。

https://github.com/clojure/core.async/blob/43139e44b04dd09bb5faa555ea8ebd2ca09e25ce/src/main/clojure/cljs/core/async.cljs#L395

显然,自 2013 年(在其被添加为核心函数之前)以来一直被错误地使用,它选择了一个在 {{cljs.core}} 中一直存在的先前私有定义(显然是幸运地改变了参数,而没有完全破坏事情)。

以下是 ASYNC-171 导致的回归的 REPL 转录

`
ClojureScript Node.js REPL 服务器正在监听 52771
要退出,请输入::cljs/quit
cljs.user=> (require 'cljs.core.async)
警告:在行 395 文件:/Users/mfikes/Projects/core.async/target/core.async-0.1.0-SNAPSHOT.jar!/cljs/core/async.cljs 中使用了未声明的 Var cljs.core.async/bounded-count
警告:在行 395 .cljs_node_repl/cljs/core/async.cljs 中使用了未声明的 Var cljs.core.async/bounded-count
nil
cljs.user=> (cljs.core.async/to-chan [])
TypeError: Cannot read property 'call' of undefined

at cljs$core$async$to_chan (/Users/mfikes/Projects/clojurescript/.cljs_node_repl/cljs/core/async.js:3042:70)
at repl:1:113
at repl:9:3
at repl:14:4
at Object.exports.runInThisContext (vm.js:54:17)
at Domain.<anonymous> ([stdin]:41:34)
at Domain.run (domain.js:221:14)
at Socket.<anonymous> ([stdin]:40:25)
at emitOne (events.js:77:13)
at Socket.emit (events.js:169:7)

`

您也可以假设在运行 ClojureScript {{core.async}} 单元测试时也会看到这个问题。特别是 {{cljs.core.async.pipeline-test}} 命名空间使用了 {{to-chan}}。(我说“假设”——我还没有找到在 JVM ClojureScript 中运行它们的方法,但在自托管的 ClojureScript 中运行了相同的测试,并在这个位置使用自托管的ClojureScript 的 {{core.async}} 分支运行了这些单元测试:https://github.com/mfikes/andare 发现了这个问题。)

1 答案

0
参考:https://clojure.atlassian.net/browse/ASYNC-175(由 mfikes 报告)
...