随着 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: 无法读取未定义的属性 '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 中运行了相同的测试,发现这些单元测试中在 self-hosted ClojureScript 的 {{core.async}} 代码分支中存在此回归:https://github.com/mfikes/andare