欢迎!请参阅 关于 页面以获取有关该功能的一些更多信息。
在为 cljs-devtools 实现一些 demunging 代码(链接:1)时,我在 type->str 中发现了不一致性。它适用于 deftype,但不适用于 defrecord。
问题是,由于某种原因,defrecord 没有设置 cljs$lang$ctorStr 字段。这很可能是被忽视了,因为 type->str 并不多用,仅用于一些很少出现的错误异常。
无论如何,这个补丁通过复制粘贴从 deftype 中修复了它。为了防止未来出现类似问题,最好的解决方案可能是从 deftype 和 defrecord 中提取共享代码,但这似乎要做很多工作。
此外,补丁还添加了几个测试。由于 type->str 不应在高级构建中使用,因此我必须添加一些实用宏来只在简单模式下运行这些测试。还添加了针对 CLJS-1722 的测试,并在可能合并后取消注释。
(链接:1)https://github.com/binaryage/cljs-devtools/blob/52899e61e33373df36be8dcb23c69377936821b2/src/lib/devtools/munging.cljs#L56-L60
评论者:mfikes
补丁不再适用;需要重新基准测试。