mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* vm_insnhelper.c (vm_call_method): protected singleton methods of
an object should not be able to called from other instances of the class of the object. [ruby-core:26761] * vm_eval.c (rb_method_call_status): ditto. * test/ruby/test_module.rb (test_protected_singleton_method): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25796 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
98cf9c43fa
commit
3dc8a69df7
4 changed files with 36 additions and 2 deletions
|
@ -854,4 +854,28 @@ class TestModule < Test::Unit::TestCase
|
|||
end
|
||||
assert_equal("", stderr)
|
||||
end
|
||||
|
||||
def test_protected_singleton_method
|
||||
klass = Class.new
|
||||
x = klass.new
|
||||
class << x
|
||||
protected
|
||||
|
||||
def foo
|
||||
end
|
||||
end
|
||||
assert_raise(NoMethodError) do
|
||||
x.foo
|
||||
end
|
||||
klass.send(:define_method, :bar) do
|
||||
x.foo
|
||||
end
|
||||
assert_nothing_raised do
|
||||
x.bar
|
||||
end
|
||||
y = klass.new
|
||||
assert_raise(NoMethodError) do
|
||||
y.bar
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue