diff --git a/lib/json/truffle_ruby/generator.rb b/lib/json/truffle_ruby/generator.rb index 13b15459..09459286 100644 --- a/lib/json/truffle_ruby/generator.rb +++ b/lib/json/truffle_ruby/generator.rb @@ -517,7 +517,7 @@ def json_transform(state) if empty? state.depth -= 1 - return '{}' + return +'{}' end delim = ",#{state.object_nl}" @@ -609,7 +609,7 @@ def json_transform(state) if empty? state.depth -= 1 - return '[]' + return +'[]' end result = '['.dup @@ -734,17 +734,17 @@ def to_json(state = nil, *args) module TrueClass # Returns a JSON string for true: 'true'. - def to_json(*) 'true' end + def to_json(*) +'true' end end module FalseClass # Returns a JSON string for false: 'false'. - def to_json(*) 'false' end + def to_json(*) +'false' end end module NilClass # Returns a JSON string for nil: 'null'. - def to_json(*) 'null' end + def to_json(*) +'null' end end end end diff --git a/test/json/json_generator_test.rb b/test/json/json_generator_test.rb index eb5a8ca5..1e44117e 100755 --- a/test/json/json_generator_test.rb +++ b/test/json/json_generator_test.rb @@ -84,6 +84,24 @@ def test_dump_strict assert_equal '"World"', "World".to_json(strict: true) end + def test_not_frozen + [ + [[], '[]'], + [{}, '{}'], + ["string", '"string"'], + [:sym, '"sym"'], + [1, '1'], + [1.0, '1.0'], + [true, 'true'], + [false, 'false'], + [nil, 'null'], + ].each do |(obj, exp)| + dumped = dump(obj, strict: true) + assert_equal exp, dumped + refute_predicate dumped, :frozen? + end + end + def test_state_depth_to_json depth = Object.new def depth.to_json(state)