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