欢迎!请参阅关于页面以获取更多关于这个工作方式的详细信息。
嗨,大家好,
我准备了一个补丁来修复IFn无法使用超过20个参数进行调用的这个问题。在apply_test.cljs中的相应测试用例几年前已经被注释掉了。
这很可能是修复了meta函数、多方法、spec函数以及所有IFn实现的bug。
以下是我找到的相关票据
"多方法apply使用超过20个参数失败" https://clojure.atlassian.net/browse/CLJS-3024
"with-meta对变量参数函数不起作用" https://clojure.atlassian.net/browse/CLJS-2446
"指定函数上的高参数arity.apply抛出'Invalid arity'错误" https://clojure.atlassian.net/browse/CLJS-2710
也许这也修复/完成了2012年这一条
"编译器需要将调用后的所有参数20个之后放入一个array-seq中" https://clojure.atlassian.net/browse/CLJS-364
这是补丁在这里;一个单独的小提交
https://github.com/active-group/clojurescript/commit/122e1ab4be7230841e15b392223d4b33560cfa5b
它还移除了一个多余的'aclone'调用(concat已经创建了一个浅拷贝)。
我用Nashorn运行了测试,以前被注释的测试现在成功了。
我在2016年签署了贡献者协议,但现在在JIRA上注册后,它说我不具有'在clojure.atlassian.net上的JIRA访问权限',因此我在这里开始提问。
希望这能通过,因为我在等这个问题被修复已经等了多年了。
大卫。
根据您之前的安全证书,我向您发送了Jira的邀请。如果您未收到此邀请或您的邮箱已更改,请通过[email protected]联系我。
你好,感谢您对此事的关注。所提出的补丁仅解决了顶级函数的问题 - 正确的修复还需要对编译器函数代码生成进行更改,以涵盖匿名函数的情况。