aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--test/ruby/test_module.rb29
-rw-r--r--vm_method.c16
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 <nobu@ruby-lang.org>
+
+ * 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 <nobu@ruby-lang.org>
* 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