diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-06-28 17:10:00 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-06-28 17:10:00 +0000 |
commit | b90a5f9334a84b46a49b0966ecd250c2e52a8312 (patch) | |
tree | a5ad9510c94450dbdb7f09d9f48c66835a8755fc | |
parent | 491ace2dbebcba5e6f36b9e877c585823fd583f1 (diff) | |
download | ruby-b90a5f9334a84b46a49b0966ecd250c2e52a8312.tar.gz |
insns.def: preserve encoding
* insns.def (defineclass): preserve encoding of name in error
messages for non-class super.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51054 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | insns.def | 4 | ||||
-rw-r--r-- | test/ruby/test_class.rb | 10 |
3 files changed, 16 insertions, 3 deletions
@@ -1,4 +1,7 @@ -Mon Jun 29 02:06:51 2015 Nobuyoshi Nakada <nobu@ruby-lang.org> +Mon Jun 29 02:08:01 2015 Nobuyoshi Nakada <nobu@ruby-lang.org> + + * insns.def (defineclass): preserve encoding of name in error + messages for non-class super. * insns.def (defineclass): preserve encoding of name in error messages when already defined but type mismatch. @@ -844,8 +844,8 @@ defineclass if (VM_DEFINECLASS_HAS_SUPERCLASS_P(flags) && !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 (super == Qnil) { diff --git a/test/ruby/test_class.rb b/test/ruby/test_class.rb index 4f7e037580..27558e33dd 100644 --- a/test/ruby/test_class.rb +++ b/test/ruby/test_class.rb @@ -359,6 +359,16 @@ class TestClass < Test::Unit::TestCase end end; end + + m = Module.new + n = "M\u{1f5ff}" + c = m.module_eval "class #{n}; new; end" + assert_raise_with_message(TypeError, /#{n}/) { + eval <<-"end;" + class C < c + end + end; + } end def test_cloned_singleton_method_added |