summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorshugo <shugo@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-10-23 15:41:04 +0000
committershugo <shugo@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-10-23 15:41:04 +0000
commit8c8e17d49917b0f8cb8e1437b78dc1d0a2e6e945 (patch)
treed1b5a519ebe1a226e5425cf140e0e62cab2cf5cd
parentf8a83d8563df92a4c8630d15211694435a639609 (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--ChangeLog7
-rw-r--r--lib/forwardable.rb4
-rw-r--r--test/test_forwardable.rb16
3 files changed, 25 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 142703a14d..61a5092265 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+Sat Oct 24 00:38:34 2015 Shugo Maeda <shugo@ruby-lang.org>
+
+ * 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 <nobu@ruby-lang.org>
* 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
$@.delete_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
$@.delete_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)