From 2322c94dd65c0247b103e2f91411e37458e1466d Mon Sep 17 00:00:00 2001 From: Jeremy Evans Date: Sun, 25 Aug 2019 00:04:14 -0700 Subject: Support delegates for BasicObject For BasicObject, bind the Kernel respond_to? instance method to the object and call it instead of calling the method directly. Also, use bind_call(recv, ...) for better performance. Fixes [Bug #16127] --- test/test_delegate.rb | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'test/test_delegate.rb') diff --git a/test/test_delegate.rb b/test/test_delegate.rb index 9634681797..7f6e7c1326 100644 --- a/test/test_delegate.rb +++ b/test/test_delegate.rb @@ -322,4 +322,12 @@ class TestDelegateClass < Test::Unit::TestCase delegate.constants end end + + def test_basicobject + o = BasicObject.new + def o.bar; 1; end + delegate = SimpleDelegator.new(o) + assert_equal(1, delegate.bar) + assert_raise(NoMethodError, /undefined method `foo' for/) { delegate.foo } + end end -- cgit v1.2.3