From 8d4dff2c181d5ef81f0aae495c512f8e6622552f Mon Sep 17 00:00:00 2001 From: hsbt Date: Fri, 30 Oct 2015 03:36:21 +0000 Subject: * vm_method.c: added documentation of protected/private methods. [fix GH-1072] * test/ruby/test_module.rb: added testcase for method_defined? [fix GH-1071] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52381 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 7 +++++++ test/ruby/test_module.rb | 29 +++++++++++++++++++++-------- vm_method.c | 16 +++++++++++----- 3 files changed, 39 insertions(+), 13 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7ab414a107..786b54a5b1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +Fri Oct 30 12:36:16 2015 Nobuyoshi Nakada + + * vm_method.c: added documentation of protected/private methods. + [fix GH-1072] + * test/ruby/test_module.rb: added testcase for method_defined? + [fix GH-1071] + Fri Oct 30 12:06:59 2015 Nobuyoshi Nakada * variable.c (rb_class_ivar_set): rename as class specific ivar diff --git a/test/ruby/test_module.rb b/test/ruby/test_module.rb index 358e47af64..19cf418cf1 100644 --- a/test/ruby/test_module.rb +++ b/test/ruby/test_module.rb @@ -74,6 +74,14 @@ class TestModule < Test::Unit::TestCase include Mixin def user end + + def user2 + end + protected :user2 + + def user3 + end + private :user3 end module Other @@ -442,8 +450,8 @@ class TestModule < Test::Unit::TestCase end def test_instance_methods - assert_equal([:user], User.instance_methods(false)) - assert_equal([:user, :mixin].sort, User.instance_methods(true).sort) + assert_equal([:user, :user2], User.instance_methods(false)) + assert_equal([:user, :user2, :mixin].sort, User.instance_methods(true).sort) assert_equal([:mixin], Mixin.instance_methods) assert_equal([:mixin], Mixin.instance_methods(true)) assert_equal([:cClass], (class << CClass; self; end).instance_methods(false)) @@ -458,12 +466,17 @@ class TestModule < Test::Unit::TestCase end def test_method_defined? - assert_method_not_defined?(User, :wombat) - assert_method_defined?(User, :user) - assert_method_defined?(User, :mixin) - assert_method_not_defined?(User, :wombat) - assert_method_defined?(User, :user) - assert_method_defined?(User, :mixin) + assert !User.method_defined?(:wombat) + assert User.method_defined?(:mixin) + assert User.method_defined?(:user) + assert User.method_defined?(:user2) + assert !User.method_defined?(:user3) + + assert !User.method_defined?("wombat") + assert User.method_defined?("mixin") + assert User.method_defined?("user") + assert User.method_defined?("user2") + assert !User.method_defined?("user3") end def module_exec_aux diff --git a/vm_method.c b/vm_method.c index 4059312953..1e57176fcf 100644 --- a/vm_method.c +++ b/vm_method.c @@ -1198,20 +1198,26 @@ rb_mod_undef_method(int argc, VALUE *argv, VALUE mod) * * module A * def method1() end + * def protected_method1() end + * protected :protected_method1 * end * class B * def method2() end + * def private_method2() end + * private :private_method2 * end * class C < B * include A * def method3() end * end * - * A.method_defined? :method1 #=> true - * C.method_defined? "method1" #=> true - * C.method_defined? "method2" #=> true - * C.method_defined? "method3" #=> true - * C.method_defined? "method4" #=> false + * A.method_defined? :method1 #=> true + * C.method_defined? "method1" #=> true + * C.method_defined? "method2" #=> true + * C.method_defined? "method3" #=> true + * C.method_defined? "protected_method1" #=> true + * C.method_defined? "method4" #=> false + * C.method_defined? "private_method2" #=> false */ static VALUE -- cgit v1.2.3