* eval.c (rb_f_send): allow send/__send__ to call methods of all

visibility again.  we no longer provide __send, __send!.

* eval.c (rb_invoke_method): new method to honor private
  visibility.  if it's invoked in a function call style, it calls
  private methods as well (previous 1.9 send behavior).

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13824 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
matz 2007-11-04 20:36:20 +00:00
parent ed823523e3
commit 1eee78b876
28 changed files with 92 additions and 101 deletions

View file

@ -124,7 +124,7 @@ class TestEval < Test::Unit::TestCase
obj.class.class_variable_set :@@cvar, 13
# Use same value with env. See also test_instance_variable_cvar.
obj.class.const_set :Const, 15 unless obj.class.const_defined?(:Const)
send! mid, obj
send mid, obj
end
end
@ -364,7 +364,7 @@ class TestEval < Test::Unit::TestCase
assert_nothing_raised {
def temporally_method_for_test_eval_and_define_method(&block)
lambda {
class << Object.new; self end.send!(:define_method, :zzz, &block)
class << Object.new; self end.send(:define_method, :zzz, &block)
}
end
v = eval("temporally_method_for_test_eval_and_define_method {}")