summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--numeric.c2
-rw-r--r--test/ruby/test_numeric.rb11
2 files changed, 11 insertions, 2 deletions
diff --git a/numeric.c b/numeric.c
index 3ceb5ae2d2..ddc909ee28 100644
--- a/numeric.c
+++ b/numeric.c
@@ -332,7 +332,7 @@ num_sadded(VALUE x, VALUE name)
static VALUE
num_init_copy(VALUE x, VALUE y)
{
- rb_raise(rb_eTypeError, "can't copy %s", rb_obj_classname(x));
+ rb_raise(rb_eTypeError, "can't copy %"PRIsVALUE, rb_obj_class(x));
UNREACHABLE;
}
diff --git a/test/ruby/test_numeric.rb b/test/ruby/test_numeric.rb
index 7fbb8e955d..ecf5ebb32c 100644
--- a/test/ruby/test_numeric.rb
+++ b/test/ruby/test_numeric.rb
@@ -56,11 +56,20 @@ class TestNumeric < Test::Unit::TestCase
end
end
- def test_numeric
+ def test_singleton_method
a = Numeric.new
assert_raise_with_message(TypeError, /foo/) { def a.foo; end }
assert_raise_with_message(TypeError, /\u3042/) { eval("def a.\u3042; end") }
+ end
+
+ def test_dup
+ a = Numeric.new
assert_raise(TypeError) { a.dup }
+
+ c = Module.new do
+ break eval("class C\u{3042} < Numeric; self; end")
+ end
+ assert_raise_with_message(TypeError, /C\u3042/) {c.new.dup}
end
def test_quo