当前失败的示例
`
(ns a-b.core)
(defn doit [])
(ns a-b.other
(:require [a-b.core :as core]))
(let [a_b 2]
(core/doit)) ;; 失败,a_b 没有正确屏蔽
;; 相关
(let [a_b 1, a-b 2] a_b) ;; 冲突,返回 2!
(let [a-b 1, a_b 2] a_b) ;; 冲突,返回 2!
(let [goog "2"] (js-obj goog 2) ;; 失败。覆盖了 goog!
`
由于编译器的屏蔽逻辑相当昂贵,并且进一步动态计算每个 "第一个命名空间段" 的新名称可能导致编译器速度降低 2 倍(或更多),我们应该可能重新引入这种方法
https://github.com/clojure/clojurescript/commit/1c71ab3bff27dc4a099b06e122ec3fdf5a2a8ba8
也就是说,维护一组首位命名空间段,并在 shadow-depth 中执行简单的集合查找。我们可能只需要存储新名称,并在屏蔽后进行查找以修复上述错误。我们还应该添加 "goog"。