Skip to content

Commit 2e015ff

Browse files
committed
Fix JSON::GeneratorError#detailed_message with Ruby < 3.2
1 parent f3e1136 commit 2e015ff

File tree

2 files changed

+13
-2
lines changed

2 files changed

+13
-2
lines changed

lib/json/common.rb

+5-2
Original file line numberDiff line numberDiff line change
@@ -152,10 +152,13 @@ def initialize(message, invalid_object = nil)
152152
end
153153

154154
def detailed_message(...)
155+
# Exception#detailed_message doesn't exist until Ruby 3.2
156+
super_message = defined?(super) ? super : message
157+
155158
if @invalid_object.nil?
156-
super
159+
super_message
157160
else
158-
"#{super}\nInvalid object: #{@invalid_object.inspect}"
161+
"#{super_message}\nInvalid object: #{@invalid_object.inspect}"
159162
end
160163
end
161164
end

test/json/json_generator_test.rb

+8
Original file line numberDiff line numberDiff line change
@@ -410,6 +410,14 @@ def test_json_generate
410410
end
411411
end
412412

413+
def test_json_generate_error_detailed_message
414+
error = assert_raise JSON::GeneratorError do
415+
generate(["\xea"])
416+
end
417+
418+
assert_not_nil(error.detailed_message)
419+
end
420+
413421
def test_json_generate_unsupported_types
414422
assert_raise JSON::GeneratorError do
415423
generate(Object.new, strict: true)

0 commit comments

Comments
 (0)