请在2024年Clojure状态调查!中分享您的想法。

欢迎!请查阅关于页面以了解更多关于这样工作的方式。

0
Clojure

这应该会按预期工作,例如

{{(Integer. 1N)}}

可能是针对{{BigInt}}、{{BigInteger}}和{{BigDecimal}}。

要查看的方法是{{c.l.Reflector.paramArgTypeMatch}},根据Rich在irc中的说法。

11 个答案

0

评论人:trptcolin

有关这对左移位影响的clojure-dev列表中的问题:http://groups.google.com/group/clojure-dev/browse_thread/thread/2191cbf0048d8ca6

0

评论人:ataggart

CLJ-445补丁修复了这个问题。

0

评论人:trptcolin

此补丁会失败一个关于位左移BigInt的测试:(bit-shift-left 1N 10000)。原因是补丁改变了(BigInt,Long)的调度从(Object,Object)变为(long,int)。

显然这不能应用(除非其他改变使其成为可能),但我还是将其作为对话的开始。

0

评论人:ataggart

来自邮件列表的我的评论

如果测试失败,很可能是因为在调用 Numbers.shiftLeft(long,int) 而不是 Numbers.shiftLeft(Object,Object) 时出了问题。
由于1N是一个对象(可以超出long的大小),因此方法的选择是不正确的,因此补丁存在漏洞。
由于在Compiler中默认选择方法而不是智能决策,因此“仅仅修改paramArgTypeMatch”的提议是不充分的。
补丁是坏的。


由于Compiler不智能足够做出这些决定,因此仅在Compiler中优先选择一个方法而不是另一个方法的机制是不够的。

0

评论者:redinger

考虑将此从Release.next移出 - 向Chas征求评论。

0
_评论者:cemerick_

我恐怕在这个问题上没有特别的洞察。我最初遇到了一些问题,并在Rich的建议下创建了工单。如果工单中的文本让任何人走了弯路,我表示歉意。
0

评论者:lvanderhart

由于已经决定只有32/64位值可以使用位移操作,所以与位操作相关的问题是无关紧要的。

这是一个有效的问题,但按照Rich的指示降低优先级。

0

评论者:alexott

原补丁的修改版本

0

评论者:jafingerhut

Alex,你介意使用一个唯一文件名将其附加吗?我知道JIRA允许我们使用相同的文件名创建多个附件,我们知道我们可以通过日期和上传附件的人的账户来区分它们,但给它们相同的名字似乎只会引起困惑。

0

评论者:alexott

将更新的补丁重命名为唯一名称

0
参考: https://clojure.atlassian.net/browse/CLJ-666(由 cemerick 报告)
...