mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* lib/delegate.rb (Delegator#initialize, DelegateClass): skip correct
backtrace. [ruby-dev:34019] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@15747 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
1c411796ef
commit
c0667c0187
2 changed files with 12 additions and 9 deletions
|
@ -1,3 +1,8 @@
|
|||
Tue Mar 11 17:03:23 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* lib/delegate.rb (Delegator#initialize, DelegateClass): skip correct
|
||||
backtrace. [ruby-dev:34019]
|
||||
|
||||
Tue Mar 11 16:43:53 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* win32/win32.c (rb_w32_cmdvector): terminate shrunken command line.
|
||||
|
|
|
@ -115,6 +115,7 @@
|
|||
# implementation, see SimpleDelegator.
|
||||
#
|
||||
class Delegator
|
||||
IgnoreBacktracePat = %r"\A#{Regexp.quote(__FILE__)}:\d+:in `"
|
||||
|
||||
#
|
||||
# Pass in the _obj_ to delegate method calls to. All methods supported by
|
||||
|
@ -133,14 +134,12 @@ class Delegator
|
|||
for method in obj.methods
|
||||
next if preserved.include? method
|
||||
begin
|
||||
eval <<-EOS
|
||||
eval <<-EOS, nil, __FILE__, __LINE__+1
|
||||
def self.#{method}(*args, &block)
|
||||
begin
|
||||
__getobj__.__send__(:#{method}, *args, &block)
|
||||
rescue Exception
|
||||
$@.delete_if{|s| /:in `__getobj__'$/ =~ s} #`
|
||||
$@.delete_if{|s| /^\\(eval\\):/ =~ s}
|
||||
Kernel::raise
|
||||
ensure
|
||||
$@.delete_if{|s|IgnoreBacktracePat=~s}
|
||||
end
|
||||
end
|
||||
EOS
|
||||
|
@ -291,13 +290,12 @@ def DelegateClass(superclass)
|
|||
}
|
||||
for method in methods
|
||||
begin
|
||||
klass.module_eval <<-EOS
|
||||
klass.module_eval <<-EOS, __FILE__, __LINE__+1
|
||||
def #{method}(*args, &block)
|
||||
begin
|
||||
@_dc_obj.__send__(:#{method}, *args, &block)
|
||||
rescue
|
||||
$@[0,2] = nil
|
||||
raise
|
||||
ensure
|
||||
$@.delete_if{|s| ::Delegator::IgnoreBacktracePat =~ s}
|
||||
end
|
||||
end
|
||||
EOS
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue