summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorusa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-04-30 07:45:49 +0000
committerusa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-04-30 07:45:49 +0000
commit03da71a9ae194cb2b47318b85b47c6b1001fe1b0 (patch)
tree06228c5cfc356582ed842ec0e2fdf257106fd6a4 /lib
parentda20411b5127108f83188dbb7ca7a150687010c0 (diff)
revert r45747 because it introduced severe incompatibility.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_0_0@45755 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib')
-rw-r--r--lib/delegate.rb27
1 files changed, 6 insertions, 21 deletions
diff --git a/lib/delegate.rb b/lib/delegate.rb
index b4d495edea..e46e4f8c23 100644
--- a/lib/delegate.rb
+++ b/lib/delegate.rb
@@ -43,16 +43,9 @@
class Delegator < BasicObject
kernel = ::Kernel.dup
kernel.class_eval do
- alias __raise__ raise
[:to_s,:inspect,:=~,:!~,:===,:<=>,:eql?,:hash].each do |m|
undef_method m
end
- private_instance_methods.each do |m|
- if /\Ablock_given\?\z|iterator\?\z|\A__raise__\z/ =~ m
- next
- end
- undef_method m
- end
end
include kernel
@@ -76,15 +69,9 @@ class Delegator < BasicObject
def method_missing(m, *args, &block)
target = self.__getobj__
begin
- if target.respond_to?(m)
- target.__send__(m, *args, &block)
- elsif ::Kernel.respond_to?(m, true)
- ::Kernel.instance_method(m).bind(self).(*args, &block)
- else
- super(m, *args, &block)
- end
+ target.respond_to?(m) ? target.__send__(m, *args, &block) : super(m, *args, &block)
ensure
- $@.delete_if {|t| %r"\A#{Regexp.quote(__FILE__)}:(?:#{[__LINE__-7, __LINE__-5, __LINE__-3].join('|')}):"o =~ t} if $@
+ $@.delete_if {|t| %r"\A#{Regexp.quote(__FILE__)}:#{__LINE__-2}:"o =~ t} if $@
end
end
@@ -155,7 +142,7 @@ class Delegator < BasicObject
# method calls are being delegated to.
#
def __getobj__
- __raise__ ::NotImplementedError, "need to define `__getobj__'"
+ raise NotImplementedError, "need to define `__getobj__'"
end
#
@@ -163,7 +150,7 @@ class Delegator < BasicObject
# to _obj_.
#
def __setobj__(obj)
- __raise__ ::NotImplementedError, "need to define `__setobj__'"
+ raise NotImplementedError, "need to define `__setobj__'"
end
#
@@ -278,7 +265,6 @@ end
class SimpleDelegator<Delegator
# Returns the current object method calls are being delegated to.
def __getobj__
- __raise__ ::ArgumentError, "not delegated" unless defined?(@delegate_sd_obj)
@delegate_sd_obj
end
@@ -297,7 +283,7 @@ class SimpleDelegator<Delegator
# puts names[1] # => Sinclair
#
def __setobj__(obj)
- __raise__ ::ArgumentError, "cannot delegate to self" if self.equal?(obj)
+ raise ArgumentError, "cannot delegate to self" if self.equal?(obj)
@delegate_sd_obj = obj
end
end
@@ -353,11 +339,10 @@ def DelegateClass(superclass)
methods -= [:to_s,:inspect,:=~,:!~,:===]
klass.module_eval do
def __getobj__ # :nodoc:
- __raise__ ::ArgumentError, "not delegated" unless defined?(@delegate_dc_obj)
@delegate_dc_obj
end
def __setobj__(obj) # :nodoc:
- __raise__ ::ArgumentError, "cannot delegate to self" if self.equal?(obj)
+ raise ArgumentError, "cannot delegate to self" if self.equal?(obj)
@delegate_dc_obj = obj
end
methods.each do |method|