summaryrefslogtreecommitdiff
path: root/lib/delegate.rb
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2006-07-26 09:40:05 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2006-07-26 09:40:05 +0000
commitc0a80890440ff24e8dbd704204856d62feb3142c (patch)
tree9b9143b6cda6ed56b216aa3e5ae80fb9f122e8d6 /lib/delegate.rb
parent0cd59e5b59750989ead8bf5c52f34c6cd16eccc9 (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.rb8
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
$@.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__", "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