From da70f4d02a5251605bc6a44940a7784f9f613fcb Mon Sep 17 00:00:00 2001 From: nobu Date: Sun, 28 Jun 2015 03:28:50 +0000 Subject: class.c: preserve encoding * class.c (rb_check_inheritable): preserve encoding in an error message when the superclass is not a class. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51050 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- class.c | 4 ++-- test/ruby/test_class.rb | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/class.c b/class.c index 991172acbb..6ee1e084d3 100644 --- a/class.c +++ b/class.c @@ -214,8 +214,8 @@ void rb_check_inheritable(VALUE super) { if (!RB_TYPE_P(super, T_CLASS)) { - rb_raise(rb_eTypeError, "superclass must be a Class (%s given)", - rb_obj_classname(super)); + rb_raise(rb_eTypeError, "superclass must be a Class (%"PRIsVALUE" given)", + rb_obj_class(super)); } if (RBASIC(super)->flags & FL_SINGLETON) { rb_raise(rb_eTypeError, "can't make subclass of singleton class"); diff --git a/test/ruby/test_class.rb b/test/ruby/test_class.rb index 36aeaf2bdf..3508061840 100644 --- a/test/ruby/test_class.rb +++ b/test/ruby/test_class.rb @@ -193,6 +193,9 @@ class TestClass < Test::Unit::TestCase assert_raise(TypeError) { Class.new(c) } assert_raise(TypeError) { Class.new(Class) } assert_raise(TypeError) { eval("class Foo < Class; end") } + m = "M\u{1f5ff}" + o = Class.new {break eval("class #{m}; self; end.new")} + assert_raise_with_message(TypeError, /#{m}/) {Class.new(o)} end def test_initialize_copy -- cgit v1.2.3