diff options
author | usa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2014-04-30 07:45:49 +0000 |
---|---|---|
committer | usa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2014-04-30 07:45:49 +0000 |
commit | 03da71a9ae194cb2b47318b85b47c6b1001fe1b0 (patch) | |
tree | 06228c5cfc356582ed842ec0e2fdf257106fd6a4 /lib | |
parent | da20411b5127108f83188dbb7ca7a150687010c0 (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.rb | 27 |
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| |