欢迎!请访问关于页面,了解更多关于它是如何工作的信息。
这应该按预期工作,例如
{{(Integer. 1N)}}
可能适用于{{BigInt}}、{{BigInteger}}和{{BigDecimal}}。
按照Rich在irc中的说法,查看的方法是{{c.l.Reflector.paramArgTypeMatch}}。
评论者:trptcolin
关于这如何影响位左移的clojure-dev列表中的问题:http://groups.google.com/group/clojure-dev/browse_thread/thread/2191cbf0048d8ca6
评论者:ataggart
CLJ-445补丁也修复了这个问题。
这个补丁在位左移BigInt时失败:(bit-shift-left 1N 10000)。原因是补丁更改了(BigInt, Long)的派发从(Object, Object)变为(long, int)。
(bit-shift-left 1N 10000)
显然,不能应用这个补丁(除非其他更改使其可行),但我将其作为对话的开端。
我在邮件列表中的评论
如果测试失败,可能意味着Numbers.shiftLeft(long,int)被选用了,而不是Numbers.shiftLeft(Object,Object)。鉴于1N是一个Object(一个可以超过long类型大小的对象),方法选择是不正确的,因此补丁是损坏的。
“仅仅”修改paramArgTypeMatch的建议是不够的,因为选择一个方法胜过另一个方法的机制存在于编译器中,它不足以智能地做出这类决定。
评论者:redinger
考虑将此移出Release.next,征求Chas的评论。
评论者:lvanderhart
由于决定了位运算只用于32/64位值,与位运算相关的问题不再重要。
虽有价值,但根据Rich的建议已降低优先级。
评论者:alexott
原始补丁的修改版
评论者:jafingerhut
Alex,你介意用唯一的文件名附件吗?我知道JIRA允许我们创建具有相同文件名的多个附件,我们也知道可以通过日期和上传附件的人的账户来区分它们,但给它们相同的名字只会引起混淆。
将更新的补丁重命名为了独特名称