diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | class.c | 4 | ||||
-rw-r--r-- | lib/delegate.rb | 4 | ||||
-rw-r--r-- | test/test_delegate.rb | 7 |
4 files changed, 17 insertions, 3 deletions
@@ -1,3 +1,8 @@ +Sun Dec 4 12:03:16 2011 NARUSE, Yui <[email protected]> + + * lib/delegate.rb (Delegator#methods): Kernel#methods receives + zero or one argument. [ruby-core:37118] [Bug #4882] + Sun Dec 4 10:15:00 2011 Luis Lavena <[email protected]> * ext/zlib/zlib.c (rb_gzreader_initialize): use binary mode by default @@ -1111,11 +1111,13 @@ rb_class_public_instance_methods(int argc, VALUE *argv, VALUE mod) /* * call-seq: - * obj.methods -> array + * obj.methods(all=true) -> array * * Returns a list of the names of public and protected methods of * <i>obj</i>. This will include all the methods accessible in * <i>obj</i>'s ancestors. + * If the <i>all</i> parameter is set to <code>false</code>, only those methods + * in the receiver will be listed. * * class Klass * def klass_method() diff --git a/lib/delegate.rb b/lib/delegate.rb index 2086a721f9..863c63ff58 100644 --- a/lib/delegate.rb +++ b/lib/delegate.rb @@ -92,8 +92,8 @@ class Delegator < BasicObject # Returns the methods available to this delegate object as the union # of this object's and \_\_getobj\_\_ methods. # - def methods - __getobj__.methods | super + def methods(all=true) + __getobj__.methods(all) | super end # diff --git a/test/test_delegate.rb b/test/test_delegate.rb index dc12aa35f9..a09451b88f 100644 --- a/test/test_delegate.rb +++ b/test/test_delegate.rb @@ -111,6 +111,13 @@ class TestDelegateClass < Test::Unit::TestCase assert_raise(NoMethodError, '[ruby-dev:40314]#3') {m.call} end + def test_methods + s = SimpleDelegator.new("foo") + assert_equal([], s.methods(false)) + def s.bar; end + assert_equal([:bar], s.methods(false)) + end + class Foo private def delegate_test_private |