From 963382931a5d0170d7a85c74aea50744e0fe3c6b Mon Sep 17 00:00:00 2001 From: Benoit Daloze Date: Thu, 26 Mar 2026 16:42:02 +0100 Subject: [PATCH] Keep Integer#to_json optimized and adapt the test * Redefining Integer#to_s is bound to break many things, any non-segfault outcome should be acceptable. So adapt the test to just ensure it does not segfault. * Also redefining Kernel#String would also break with the previous code. --- lib/json/truffle_ruby/generator.rb | 6 ++---- test/json/json_generator_test.rb | 10 +++++++--- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/lib/json/truffle_ruby/generator.rb b/lib/json/truffle_ruby/generator.rb index 1c6d99f8..aa281eed 100644 --- a/lib/json/truffle_ruby/generator.rb +++ b/lib/json/truffle_ruby/generator.rb @@ -413,7 +413,7 @@ def generate(obj, anIO = nil) buf << obj.to_json(self) end when Integer - buf << String(obj) + buf << obj.to_s when Symbol if @strict fast_serialize_string(obj.name, buf) @@ -652,9 +652,7 @@ def json_transform(state) module Integer # Returns a JSON string representation for this Integer number. - def to_json(*) - String(self) - end + def to_json(*) to_s end end module Float diff --git a/test/json/json_generator_test.rb b/test/json/json_generator_test.rb index 00960dff..0eb85a82 100755 --- a/test/json/json_generator_test.rb +++ b/test/json/json_generator_test.rb @@ -504,10 +504,14 @@ def to_s end alias_method :to_s, :to_s end - case RUBY_PLATFORM - when "java" + case RUBY_ENGINE + when "jruby" assert_equal bignum_to_s, JSON.generate(bignum) - else + when "truffleruby" + assert_raise(NoMethodError) do + JSON.generate(bignum) + end + when "ruby" assert_raise(TypeError) do JSON.generate(bignum) end