diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-02-21 14:51:22 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-02-21 14:51:22 +0000 |
commit | f2c5146dc4e55db48310c62cef7cbcc9c2edc978 (patch) | |
tree | 6fae51be3de4b0f5045ef8cd385abf7497be9401 | |
parent | f5faaf7b9a95108074d4ac1018c5b6fcab1e12f9 (diff) | |
download | ruby-f2c5146dc4e55db48310c62cef7cbcc9c2edc978.tar.gz |
object.c: message encoding
* object.c (rb_obj_clone2): preserve encoding in error messages.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57679 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | object.c | 7 | ||||
-rw-r--r-- | test/ruby/test_object.rb | 4 |
2 files changed, 8 insertions, 3 deletions
@@ -354,14 +354,15 @@ rb_obj_clone2(int argc, VALUE *argv, VALUE obj) rb_get_kwargs(opt, keyword_ids, 0, 1, kwargs); kwfreeze = kwargs[0]; if (kwfreeze != Qundef && kwfreeze != Qtrue && kwfreeze != Qfalse) { - rb_raise(rb_eArgError, "unexpected value for freeze: %s", - rb_builtin_class_name(kwfreeze)); + rb_raise(rb_eArgError, "unexpected value for freeze: %"PRIsVALUE, + rb_obj_class(kwfreeze)); } } if (special_object_p(obj)) { if (kwfreeze == Qfalse) - rb_raise(rb_eArgError, "can't unfreeze %s", rb_obj_classname(obj)); + rb_raise(rb_eArgError, "can't unfreeze %"PRIsVALUE, + rb_obj_class(obj)); return obj; } clone = rb_obj_alloc(rb_obj_class(obj)); diff --git a/test/ruby/test_object.rb b/test/ruby/test_object.rb index 7c1b98f76e..d93d5594a7 100644 --- a/test/ruby/test_object.rb +++ b/test/ruby/test_object.rb @@ -61,6 +61,10 @@ class TestObject < Test::Unit::TestCase assert_raise(ArgumentError) {true.clone(freeze: false)} assert_raise(ArgumentError) {nil.clone(freeze: false)} assert_raise(ArgumentError) {false.clone(freeze: false)} + x = EnvUtil.labeled_class("\u{1f4a9}").new + assert_raise_with_message(ArgumentError, /\u{1f4a9}/) do + Object.new.clone(freeze: x) + end end def test_init_dupclone |