diff options
author | shugo <shugo@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-10-23 15:41:04 +0000 |
---|---|---|
committer | shugo <shugo@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-10-23 15:41:04 +0000 |
commit | 8c8e17d49917b0f8cb8e1437b78dc1d0a2e6e945 (patch) | |
tree | d1b5a519ebe1a226e5425cf140e0e62cab2cf5cd | |
parent | f8a83d8563df92a4c8630d15211694435a639609 (diff) |
* lib/forwardable (def_instance_delegator, def_single_delegator):
rescue ::Exception instead of Exception in case Exception is
defined under the target class.
[ruby-core:71175] [Ruby trunk - Bug #11615]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52249 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | lib/forwardable.rb | 4 | ||||
-rw-r--r-- | test/test_forwardable.rb | 16 |
3 files changed, 25 insertions, 2 deletions
@@ -1,3 +1,10 @@ +Sat Oct 24 00:38:34 2015 Shugo Maeda <[email protected]> + + * lib/forwardable (def_instance_delegator, def_single_delegator): + rescue ::Exception instead of Exception in case Exception is + defined under the target class. + [ruby-core:71175] [Ruby trunk - Bug #11615] + Fri Oct 23 21:10:37 2015 Nobuyoshi Nakada <[email protected]> * error.c (name_err_mesg_to_str): separate class names from the diff --git a/lib/forwardable.rb b/lib/forwardable.rb index ecc5f03843..d814a756fa 100644 --- a/lib/forwardable.rb +++ b/lib/forwardable.rb @@ -181,7 +181,7 @@ module Forwardable def #{ali}(*args, &block) begin #{accessor}.__send__(:#{method}, *args, &block) - rescue Exception + rescue ::Exception [email protected]_if{|s| Forwardable::FILE_REGEXP =~ s} unless Forwardable::debug ::Kernel::raise end @@ -273,7 +273,7 @@ module SingleForwardable def #{ali}(*args, &block) begin #{accessor}.__send__(:#{method}, *args, &block) - rescue Exception + rescue ::Exception [email protected]_if{|s| Forwardable::FILE_REGEXP =~ s} unless Forwardable::debug ::Kernel::raise end diff --git a/test/test_forwardable.rb b/test/test_forwardable.rb index c04c78577b..9b26019893 100644 --- a/test/test_forwardable.rb +++ b/test/test_forwardable.rb @@ -94,6 +94,22 @@ class TestForwardable < Test::Unit::TestCase end end + class Foo + extend Forwardable + + def_delegator :bar, :baz + + class Exception + end + end + + def test_backtrace_adjustment + e = assert_raise(NameError) { + Foo.new.baz + } + assert_not_match(/\/forwardable\.rb/, e.backtrace[0]) + end + private def forwardable_class(&block) |