From 1eee78b8769f7f01cead3b0782e1ee4ed84e281b Mon Sep 17 00:00:00 2001 From: matz Date: Sun, 4 Nov 2007 20:36:20 +0000 Subject: * 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 --- lib/delegate.rb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'lib/delegate.rb') diff --git a/lib/delegate.rb b/lib/delegate.rb index 9084a7f191..809faa32c6 100644 --- a/lib/delegate.rb +++ b/lib/delegate.rb @@ -115,7 +115,7 @@ # implementation, see SimpleDelegator. # class Delegator - preserved = [:__id__, :object_id, :__send__, :__send, :__send!, :respond_to?, :send, :send!] + preserved = [:__id__, :object_id, :__send__, :invoke_method, :respond_to?, :send] instance_methods.each do |m| next if preserved.include?(m) undef_method m @@ -137,7 +137,7 @@ class Delegator unless target.respond_to?(m) super(m, *args, &block) else - target.__send(m, *args, &block) + target.__send__(m, *args, &block) end rescue Exception $@.delete_if{|s| /^#{__FILE__}:\d+:in `method_missing'$/ =~ s} #` @@ -262,7 +262,7 @@ def DelegateClass(superclass) klass = Class.new methods = superclass.public_instance_methods(true) methods -= [ - :__id__, :object_id, :__send__, :__send, :__send!, :respond_to?, :send, :send!, + :__id__, :object_id, :__send__, :invoke_method, :respond_to?, :send, :==, :equal?, :initialize, :method_missing, :__getobj__, :__setobj__, :clone, :dup, :marshal_dump, :marshal_load, ] @@ -281,7 +281,7 @@ def DelegateClass(superclass) klass.module_eval <<-EOS, __FILE__, __LINE__+1 def #{method}(*args, &block) begin - @delegate_dc_obj.__send(:#{method}, *args, &block) + @delegate_dc_obj.__send__(:#{method}, *args, &block) rescue raise $!, $@[2..-1] end -- cgit v1.2.3