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

欢迎!有关如何工作的更多信息,请参见 关于 页面。

0
ClojureScript

在为 cljs-devtools 实现某些去混淆代码(link: 1)时,我在 type->str 中遇到了不一致性。它在 deftype 中有效,但在 defrecord 中无效。

问题在于,由于某种原因,defrecord 没有设置 cljs$lang$ctorStr 字段。这很可能是被忽视了,因为 type->str 并不常用,只是在我所看到的罕见错误异常中。

无论如何,该补丁通过复制粘贴它来修复了这个问题。为了避免未来类似的问题,一个更好的解决方案是从 deftype 和 defrecord 中提取共享的代码,但这似乎是一项大量工作。

该补丁还添加了一些测试。我必须添加一些实用宏,只以简单模式运行这些测试,因为 type->str 不应该在高版本构建下工作。
还添加了针对 CLJS-1722 的测试,在可能合并后取消注释。

(link: 1) https://github.com/binaryage/cljs-devtools/blob/52899e61e33373df36be8dcb23c69377936821b2/src/lib/devtools/munging.cljs#L56-L60

2 个答案

0

由:mfikes 发布的评论

补丁不再适用;需要重新基准化。

0
参考:[https://clojure.atlassian.net/browse/CLJS-1725](https://clojure.atlassian.net/browse/CLJS-1725)(由 darwin 报告)
...