空集合上的元数据丢失
user=> (meta '^:foo [])
nil ;; 期望{:foo true},如下所示:
user=> (meta '^:foo [1])
{:foo true}
这个错误还会传播到 ^:const 变量
user=> (def ^:const foo ^:foo [])
#'user/foo
user=> (meta foo)
nil
user=> (meta @#'foo)
{:foo true}
原因:与 CLJ-1093 一样,空集合被替换成丢失 meta 的 EmptyExpr
建议:如果存在元数据,则不要替换成 EmptyExpr
补丁:0001-Support-retrieval-of-metadata-from-quoted-empty-lite.patch
审查者:*