summaryrefslogtreecommitdiff
path: root/test/ruby
diff options
context:
space:
mode:
Diffstat (limited to 'test/ruby')
-rw-r--r--test/ruby/test_alias.rb36
1 files changed, 36 insertions, 0 deletions
diff --git a/test/ruby/test_alias.rb b/test/ruby/test_alias.rb
index 0d33cb993c..6d4fcc085b 100644
--- a/test/ruby/test_alias.rb
+++ b/test/ruby/test_alias.rb
@@ -292,4 +292,40 @@ class TestAlias < Test::Unit::TestCase
end
end;
end
+
+ def test_alias_complemented_method
+ assert_in_out_err(%w[-w], "#{<<~"begin;"}\n#{<<~'end;'}")
+ begin;
+ module M
+ def foo = 1
+ self.extend M
+ end
+
+ 3.times{|i|
+ module M
+ alias foo2 foo
+ remove_method :foo
+ def foo = 2
+ ensure
+ remove_method :foo
+ alias foo foo2
+ remove_method :foo2
+ end
+
+ M.foo
+
+ original_foo = M.method(:foo)
+
+ M.class_eval do
+ remove_method :foo
+ def foo = 3
+ end
+
+ M.class_eval do
+ remove_method :foo
+ define_method :foo, original_foo
+ end
+ }
+ end;
+ end
end