diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-10-03 12:19:19 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-10-03 12:19:19 +0000 |
commit | 9603cd2f627013d50a40419e2283752346a15c99 (patch) | |
tree | 24a1181ea6e641e9b59e8cb320cec66649a54c84 | |
parent | 74926fefb7de9ade12ef1dbc4994efe981aaa55a (diff) |
* vm_method.c (rb_add_method_def): no redefinition warning on
undef.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25206 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | test/ruby/test_class.rb | 10 | ||||
-rw-r--r-- | test/ruby/test_module.rb | 8 | ||||
-rw-r--r-- | vm_method.c | 1 |
4 files changed, 23 insertions, 1 deletions
@@ -1,3 +1,8 @@ +Sat Oct 3 21:19:18 2009 Nobuyoshi Nakada <nobu@ruby-lang.org> + + * vm_method.c (rb_add_method_def): no redefinition warning on + undef. + Sat Oct 3 18:51:11 2009 Yukihiro Matsumoto <matz@ruby-lang.org> * object.c (rb_f_integer): now Integer() takes optional base diff --git a/test/ruby/test_class.rb b/test/ruby/test_class.rb index 409fc49e4e..8fe1272314 100644 --- a/test/ruby/test_class.rb +++ b/test/ruby/test_class.rb @@ -150,7 +150,15 @@ class TestClass < Test::Unit::TestCase Class.new do define_method(:foo) do end alias bar foo - alias barf oo + alias bar foo + end + end + assert_equal("", stderr) + + stderr = EnvUtil.verbose_warning do + Class.new do + def foo; end + undef foo end end assert_equal("", stderr) diff --git a/test/ruby/test_module.rb b/test/ruby/test_module.rb index c50cd38b79..59c965325f 100644 --- a/test/ruby/test_module.rb +++ b/test/ruby/test_module.rb @@ -845,5 +845,13 @@ class TestModule < Test::Unit::TestCase end end assert_equal("", stderr, '[ruby-dev:39397]') + + stderr = EnvUtil.verbose_warning do + Module.new do + def foo; end + undef foo + end + end + assert_equal("", stderr) end end diff --git a/vm_method.c b/vm_method.c index a879d0567f..ec381c40d7 100644 --- a/vm_method.c +++ b/vm_method.c @@ -185,6 +185,7 @@ rb_add_method_def(VALUE klass, ID mid, rb_method_type_t type, rb_method_definiti rb_vm_check_redefinition_opt_method(old_me); if (RTEST(ruby_verbose) && + type != VM_METHOD_TYPE_UNDEF && old_def->alias_count == 0 && old_def->type != VM_METHOD_TYPE_UNDEF && old_def->type != VM_METHOD_TYPE_ZSUPER) { |