Skip to content

Commit c177ba8

Browse files
author
okazu-dm
committed
Pass test_parse_big_integers on jruby
Aggregate FIXNUM_HANDLER and BIGNUM_HANDLER to INTEGER_HANDLER
1 parent b3ec252 commit c177ba8

File tree

1 file changed

+7
-19
lines changed

1 file changed

+7
-19
lines changed

java/src/json/ext/Generator.java

Lines changed: 7 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,11 @@
77

88
import org.jruby.Ruby;
99
import org.jruby.RubyArray;
10-
import org.jruby.RubyBignum;
1110
import org.jruby.RubyBoolean;
1211
import org.jruby.RubyClass;
13-
import org.jruby.RubyFixnum;
1412
import org.jruby.RubyFloat;
1513
import org.jruby.RubyHash;
14+
import org.jruby.RubyInteger;
1615
import org.jruby.RubyNumeric;
1716
import org.jruby.RubyString;
1817
import org.jruby.runtime.ThreadContext;
@@ -67,14 +66,14 @@ private Generator() {
6766
Handler<? super T> getHandlerFor(Ruby runtime, T object) {
6867
RubyClass metaClass = object.getMetaClass();
6968
if (metaClass == runtime.getString()) return (Handler)STRING_HANDLER;
70-
if (metaClass == runtime.getFixnum()) return (Handler)FIXNUM_HANDLER;
69+
if (metaClass == runtime.getFixnum()) return (Handler)INTEGER_HANDLER;
7170
if (metaClass == runtime.getHash()) return (Handler)HASH_HANDLER;
7271
if (metaClass == runtime.getArray()) return (Handler)ARRAY_HANDLER;
7372
if (object.isNil()) return (Handler)NIL_HANDLER;
7473
if (object == runtime.getTrue()) return (Handler)TRUE_HANDLER;
7574
if (object == runtime.getFalse()) return (Handler)FALSE_HANDLER;
7675
if (metaClass == runtime.getFloat()) return (Handler)FLOAT_HANDLER;
77-
if (metaClass == runtime.getBignum()) return (Handler)BIGNUM_HANDLER;
76+
if (metaClass == runtime.getBignum()) return (Handler)INTEGER_HANDLER;
7877
return GENERIC_HANDLER;
7978
}
8079

@@ -208,22 +207,11 @@ void generate(Session session, T object, ByteList buffer) {
208207

209208

210209
/* Handlers */
211-
212-
static final Handler<RubyBignum> BIGNUM_HANDLER =
213-
new Handler<RubyBignum>() {
214-
@Override
215-
void generate(Session session, RubyBignum object, ByteList buffer) {
216-
// JRUBY-4751: RubyBignum.to_s() returns generic object
217-
// representation (fixed in 1.5, but we maintain backwards
218-
// compatibility; call to_s(IRubyObject[]) then
219-
buffer.append(((RubyString)object.to_s(IRubyObject.NULL_ARRAY)).getByteList());
220-
}
221-
};
222-
223-
static final Handler<RubyFixnum> FIXNUM_HANDLER =
224-
new Handler<RubyFixnum>() {
210+
static final Handler<RubyInteger> INTEGER_HANDLER =
211+
new Handler<RubyInteger>() {
225212
@Override
226-
void generate(Session session, RubyFixnum object, ByteList buffer) {
213+
void generate(Session session, RubyInteger object, ByteList buffer) {
214+
RubyInteger integer = (RubyInteger)object;
227215
buffer.append(object.to_s().getByteList());
228216
}
229217
};

0 commit comments

Comments
 (0)