欢迎!有关如何工作的更多信息,请参见 关于 页面。
在为 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
由:mfikes 发布的评论
补丁不再适用;需要重新基准化。