评论由kamn发表
因此,我在寻找对这一补丁的反馈,并将尝试解释每个部分的推理。
问题是,函数只有在解析一次之后才能了解自己的参数数量。
因此,我们需要在第二次遍历中检查参数数量问题
首先,添加了两个新变量。
-activate-second-pass-warnings:布尔型 如果您想打开第二次遍历警告
-second-pass-cljs-warnings:集合 目前我们只拥有:fn-arity,但我认为最好是使其通用。
所以首先修改analyze-fn-methods-pass2函数。
在此处不使用no-warn宏,而是有一些新功能。
目标是关闭除第二次遍历警告之外的所有功能
因此,如果activate-second-pass-warnings为false,则使用no-warn,否则将使用新代码段。
还修改了default-warning-handler。在检查警告是否开启后,它会检查警告是否为第二次遍历警告,并
如果现在可以激活该警告。如果 activate-second-pass-warnings 为 false 且警告仍然存在,则意味着它是一个第二次遍历的警告。
在第二次遍历时,我们激活它。
我还尝试将所有修改都保留在 cljs.analyzer 中。
最初我将 cljs-warnings :fn-arity 设置为 false,并且它仅在第二次遍历时开启。
然而,repl 部分只是将一切设置为 true(并关闭了如 ns 错误等部分)。
因此,我决定不修改这些部分,而是保持其他文件与分析器接口一致。