aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/delegate.rb2
-rw-r--r--test/test_delegate.rb12
2 files changed, 14 insertions, 0 deletions
diff --git a/lib/delegate.rb b/lib/delegate.rb
index 70d4e4ad1d..af95c866f3 100644
--- a/lib/delegate.rb
+++ b/lib/delegate.rb
@@ -412,10 +412,12 @@ def DelegateClass(superclass, &block)
end
protected_instance_methods.each do |method|
define_method(method, Delegator.delegating_block(method))
+ alias_method(method, method)
protected method
end
public_instance_methods.each do |method|
define_method(method, Delegator.delegating_block(method))
+ alias_method(method, method)
end
end
klass.define_singleton_method :public_instance_methods do |all=true|
diff --git a/test/test_delegate.rb b/test/test_delegate.rb
index 57480b18ea..431d134f0f 100644
--- a/test/test_delegate.rb
+++ b/test/test_delegate.rb
@@ -29,6 +29,18 @@ class TestDelegateClass < Test::Unit::TestCase
assert_equal(1, klass.new([1]).foo)
end
+ def test_delegate_class_block_with_override
+ warning = EnvUtil.verbose_warning do
+ klass = DelegateClass(Array) do
+ def first
+ super.inspect
+ end
+ end
+ assert_equal("1", klass.new([1]).first)
+ end
+ assert_empty(warning)
+ end
+
def test_systemcallerror_eq
e = SystemCallError.new(0)
assert((SimpleDelegator.new(e) == e) == (e == SimpleDelegator.new(e)), "[ruby-dev:34808]")