diff options
-rw-r--r-- | test/ruby/test_object.rb | 13 | ||||
-rw-r--r-- | vm_method.c | 4 |
2 files changed, 15 insertions, 2 deletions
diff --git a/test/ruby/test_object.rb b/test/ruby/test_object.rb index 94a6e9d201..a1514ed853 100644 --- a/test/ruby/test_object.rb +++ b/test/ruby/test_object.rb @@ -365,6 +365,19 @@ class TestObject < Test::Unit::TestCase end INPUT end + + m = "\u{30e1 30bd 30c3 30c9}" + c = Class.new + assert_raise_with_message(NameError, /#{m}/) do + c.class_eval {remove_method m} + end + c = Class.new { + define_method(m) {} + remove_method(m) + } + assert_raise_with_message(NameError, /#{m}/) do + c.class_eval {remove_method m} + end end def test_method_missing diff --git a/vm_method.c b/vm_method.c index 1f397e3115..8af2198dbd 100644 --- a/vm_method.c +++ b/vm_method.c @@ -806,8 +806,8 @@ rb_mod_remove_method(int argc, VALUE *argv, VALUE mod) VALUE v = argv[i]; ID id = rb_check_id(&v); if (!id) { - rb_name_error_str(v, "method `%s' not defined in %s", - RSTRING_PTR(v), rb_class2name(mod)); + rb_name_error_str(v, "method `%"PRIsVALUE"' not defined in %"PRIsVALUE, + v, rb_obj_class(mod)); } remove_method(mod, id); } |