评论人:kamn
因此,我希望得到对这个补丁的反馈,并且我将尝试解释每个部分的理由。
问题是函数只有在解析过一次之后才了解它的参数数量。
因此,在第二遍检查参数数量问题时进行检查
首先添加了两个新变量。
-activate-second-pass-warnings:Boolean 如果你想开启第二遍的警告
-second-pass-cljs-warnings:Set 目前我们只有: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 错误)。
因此,我决定不修改这些部分,而是保持其他文件与分析器接口一致。