summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--object.c4
-rw-r--r--test/ruby/test_object.rb9
2 files changed, 11 insertions, 2 deletions
diff --git a/object.c b/object.c
index 83f2e42555..73528fe935 100644
--- a/object.c
+++ b/object.c
@@ -677,8 +677,8 @@ inspect_i(st_data_t k, st_data_t v, st_data_t a)
else {
rb_str_cat2(str, ", ");
}
- rb_str_catf(str, "%"PRIsVALUE"=%+"PRIsVALUE,
- rb_id2str(id), value);
+ rb_str_catf(str, "%"PRIsVALUE"=", rb_id2str(id));
+ rb_str_buf_append(str, rb_inspect(value));
return ST_CONTINUE;
}
diff --git a/test/ruby/test_object.rb b/test/ruby/test_object.rb
index 891ceff0c9..26256b80db 100644
--- a/test/ruby/test_object.rb
+++ b/test/ruby/test_object.rb
@@ -853,6 +853,15 @@ class TestObject < Test::Unit::TestCase
x.instance_variable_set(:@bar, 42)
assert_match(/\A#<Object:0x\h+ (?:@foo="value", @bar=42|@bar=42, @foo="value")>\z/, x.inspect)
+ # Bug: [ruby-core:19167]
+ x = Object.new
+ x.instance_variable_set(:@foo, NilClass)
+ assert_match(/\A#<Object:0x\h+ @foo=NilClass>\z/, x.inspect)
+ x.instance_variable_set(:@foo, TrueClass)
+ assert_match(/\A#<Object:0x\h+ @foo=TrueClass>\z/, x.inspect)
+ x.instance_variable_set(:@foo, FalseClass)
+ assert_match(/\A#<Object:0x\h+ @foo=FalseClass>\z/, x.inspect)
+
# #inspect does not call #to_s anymore
feature6130 = '[ruby-core:43238]'
x = Object.new