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

欢迎!请查看关于页面以了解更多关于该功能的信息。

0
ClojureScript

当前失败的示例

`
(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

也就是说,维护一个第一ns段集合并在此处进行简单的集合查找。我们可能只需要存储混淆名称,并在混淆后进行查找来修复上述错误。我们还应该添加"goog"。

1答案

0
参考:https://clojure.atlassian.net/browse/CLJS-2461(由 aralo 报告)
...