mirror of
https://github.com/ruby/ruby.git
synced 2025-08-27 06:56:13 +02:00
* vm.c (vm_define_method): do not use current CREF immediately,
but check CREF in environment or methods. Methods defined in methods should be public. [Bug #11571] * vm_method.c (rb_scope_module_func_check): check CREF in env or me. if CREF is contained by `me', then return FALSE. * test/ruby/test_method.rb: add a test. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52562 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
dd4cec36ca
commit
25f5dd6799
4 changed files with 50 additions and 10 deletions
|
@ -919,4 +919,21 @@ class TestMethod < Test::Unit::TestCase
|
|||
assert_equal(456, b.local_variable_get(:bar))
|
||||
assert_equal([:bar, :foo], b.local_variables.sort)
|
||||
end
|
||||
|
||||
class MethodInMethodClass
|
||||
def m1
|
||||
def m2
|
||||
end
|
||||
end
|
||||
private
|
||||
end
|
||||
|
||||
def test_method_in_method_visibility_should_be_public
|
||||
assert_equal([:m1].sort, MethodInMethodClass.public_instance_methods(false).sort)
|
||||
assert_equal([].sort, MethodInMethodClass.private_instance_methods(false).sort)
|
||||
|
||||
MethodInMethodClass.new.m1
|
||||
assert_equal([:m1, :m2].sort, MethodInMethodClass.public_instance_methods(false).sort)
|
||||
assert_equal([].sort, MethodInMethodClass.private_instance_methods(false).sort)
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue