diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2006-07-26 09:40:05 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2006-07-26 09:40:05 +0000 |
commit | c0a80890440ff24e8dbd704204856d62feb3142c (patch) | |
tree | 9b9143b6cda6ed56b216aa3e5ae80fb9f122e8d6 /lib/delegate.rb | |
parent | 0cd59e5b59750989ead8bf5c52f34c6cd16eccc9 (diff) |
* eval.c (Init_eval): rename #invoke_method and
#invoke_functional_method to __send and __send! respectively.
* eval.c (remove_method): prohibit removing __send and __send!.
* eval.c (rb_undef): prohibit undef'ing __send and __send!.
* eval.c (rb_eval): prohibit redefining __send and __send!.
* lib/delegate.rb (Delegator): preserve __send.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10609 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/delegate.rb')
-rw-r--r-- | lib/delegate.rb | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/lib/delegate.rb b/lib/delegate.rb index e8a731ae00..165e54a727 100644 --- a/lib/delegate.rb +++ b/lib/delegate.rb @@ -115,7 +115,7 @@ # implementation, see SimpleDelegator. # class Delegator - preserved = ["__id__", "object_id", "__send__", "respond_to?", "send", "funcall"] + preserved = ["__id__", "object_id", "__send__", "__send", "__send!", "respond_to?", "send", "funcall"] 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 [email protected]_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__", "respond_to?", "send", "funcall", + "__id__", "object_id", "__send__", "__send", "__send!", "respond_to?", "send", "funcall", "==", "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 - @_dc_obj.__send__(:#{method}, *args, &block) + @_dc_obj.__send(:#{method}, *args, &block) rescue $@[0,2] = nil raise |