_评论由:mfikes_
CLJS\-3118.patch在三个地方转换为{{-with-meta}}
在{{MapEntry}}中,这看起来是正确的,因为它被应用于一个向量字面量。
在{{vec}}和{{set}}中,{{with-meta}}被应用于分别满足{{vector?}}和{{set?}}的值。假设这些非{{nil}}值也满足{{goog/isFunction}},则{{with-meta}}将调用{{-with-meta}}。因此,这种更改也可能因为内联和省略一些检查而导致轻微的性能优化。
另一方面,如果一个满足{{goog/isFunction}}的值传递给{{vec}}或{{set}}并导致代码遵循此路径(通过满足{{vector?}} / {{set?}}),则更改的正确性也似乎取决于该值是否正确实现{{-with-meta}}。似乎只有在代码做一些奇怪的事情,例如
(extend-type function IVector (-assoc-n [_ _ _]))
或
(extend-type function ISet (-disjoin [_ _]))