summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--test/ruby/test_class.rb10
-rw-r--r--test/ruby/test_module.rb8
-rw-r--r--vm_method.c1
4 files changed, 23 insertions, 1 deletions
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 <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) {