From 0fa955360437fc8e1aee58c72ab7fc96f0d54f0d Mon Sep 17 00:00:00 2001 From: nobu Date: Sat, 13 Sep 2014 01:22:01 +0000 Subject: eval.c: fix message as same as previous versions * eval.c (rb_frozen_class_p): fix message for singleton class of class/module as same as previous versions. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47568 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- eval.c | 15 ++++++++++++++- test/ruby/test_class.rb | 6 +++++- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/eval.c b/eval.c index 90da22503e..1dabe2e24b 100644 --- a/eval.c +++ b/eval.c @@ -412,8 +412,21 @@ rb_frozen_class_p(VALUE klass) if (OBJ_FROZEN(klass)) { const char *desc; - if (FL_TEST(klass, FL_SINGLETON)) + if (FL_TEST(klass, FL_SINGLETON)) { desc = "object"; + klass = rb_ivar_get(klass, id__attached__); + if (!SPECIAL_CONST_P(klass)) { + switch (BUILTIN_TYPE(klass)) { + case T_MODULE: + case T_ICLASS: + desc = "Module"; + break; + case T_CLASS: + desc = "Class"; + break; + } + } + } else { switch (BUILTIN_TYPE(klass)) { case T_MODULE: diff --git a/test/ruby/test_class.rb b/test/ruby/test_class.rb index 9a4cdb0f58..7259594f8e 100644 --- a/test/ruby/test_class.rb +++ b/test/ruby/test_class.rb @@ -389,8 +389,12 @@ class TestClass < Test::Unit::TestCase obj = Object.new c = obj.singleton_class obj.freeze - assert_raise(RuntimeError, /frozen object/) { + assert_raise_with_message(RuntimeError, /frozen object/) { c.class_eval {def f; end} } + c = Class.new.freeze + assert_raise_with_message(RuntimeError, /frozen Class/) { + def c.f; end + } end end -- cgit v1.2.3