diff --git a/ChangeLog b/ChangeLog index 5838a5cc80..07893ce708 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Sat Oct 3 21:19:18 2009 Nobuyoshi Nakada + + * vm_method.c (rb_add_method_def): no redefinition warning on + undef. + Sat Oct 3 18:51:11 2009 Yukihiro Matsumoto * 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) {