评论由:kamn 提出
所以我想对这个补丁提供反馈,并且我会尝试解释每个部分的推理。
问题是,一个函数只有在第一次被解析之后才知道它的参数数量。
因此,我们需要在第二次遍历中检查参数数量问题。
首先,添加了两个新变量。
-activate-second-pass-warnings:布尔值基本上,如果您想开启二次遍历警报
-second-pass-cljs-warnings:集合现在我们只有 :fn-arity,但我认为最好使其通用。
因此,首先修改 analyze-fn-methods-pass2 函数。
在这里使用 no-warn 标记而不是一些新功能。
目标是关闭所有内容,除了二次遍历警报。
因此,如果 activate-second-pass-warnings 为 false,则只需使用 no-warn,否则将使用新的代码块。
默认警告处理程序也有所修改。在检查是否存在警告后,它会检查该警告是否为第二次遍历警告,并
现在可以激活该警告。如果 activate-second-pass-warnings 为 false 并且仍然存在警告,则表明它是一个第二次遍历警告
第二次遍历,因此我们激活它。
我还尝试保持所有修改都在 cljs.analyzer 中。
最初我将 cljs-warnings :fn-arity 设置为 false,并且它仅在第二次遍历时启动。
然而,REPL 部分仅仅将所有内容都设置为 true(并且关闭了选择部分,如 ns 错误)。
因此,我决定不修改这些部分,而是保持其他文件与分析器的接口相同。