Skip to content

Commit da6a94c

Browse files
committed
[GR-16506] Pre-coerce longs for BigDecimal.
PullRequest: truffleruby/956
2 parents 7875a92 + 20d6070 commit da6a94c

File tree

2 files changed

+10
-0
lines changed

2 files changed

+10
-0
lines changed

spec/truffle/bigdecimal_spec.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@
1212

1313
describe "BigDecimal" do
1414

15+
it "pre-coerces long integers" do
16+
BigDecimal(3).add(1 << 50, 3).should == BigDecimal('0.113e16')
17+
end
18+
1519
describe "bug GR-16506" do
1620

1721
before :each do

src/main/java/org/truffleruby/stdlib/bigdecimal/BigDecimalCoerceNode.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,12 @@ public Object coerce(int value,
3232
return coerce.call(getContext().getCoreLibrary().getBigDecimalOperationsModule(), "coerce_integer_to_bigdecimal", value);
3333
}
3434

35+
@Specialization
36+
public Object coerce(long value,
37+
@Cached("createPublic()") CallDispatchHeadNode coerce) {
38+
return coerce.call(getContext().getCoreLibrary().getBigDecimalOperationsModule(), "coerce_integer_to_bigdecimal", value);
39+
}
40+
3541
@Specialization(guards = "isRubyBignum(value)")
3642
public Object coerceBignum(DynamicObject value,
3743
@Cached("createPublic()") CallDispatchHeadNode coerce) {

0 commit comments

Comments
 (0)