aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-10-23 22:29:14 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-10-23 22:29:14 +0000
commit8579bb3d74c79f2ef37bed1ba3d1179b14dc5444 (patch)
treedf5b96c7c9c458320915f08540af8341f4442953
parent1e158208fc3223e39809549a7654aa9c37491e8f (diff)
downloadruby-8579bb3d74c79f2ef37bed1ba3d1179b14dc5444.tar.gz
forwardable.rb: full qualify names
* lib/forwardable.rb (def_instance_delegator, def_single_delegator): match backtraces against ::Forwardable in case the target class is a subclass of BasicObject and does not include Kernel. [ruby-core:71176] [Bug #11616] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52259 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog7
-rw-r--r--lib/forwardable.rb4
-rw-r--r--test/test_forwardable.rb13
3 files changed, 22 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index b160bf6628..b32e00ea2a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+Sat Oct 24 07:29:12 2015 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/forwardable.rb (def_instance_delegator, def_single_delegator):
+ match backtraces against ::Forwardable in case the target class
+ is a subclass of BasicObject and does not include Kernel.
+ [ruby-core:71176] [Bug #11616]
+
Sat Oct 24 04:10:13 2015 Koichi Sasada <ko1@atdot.net>
* iseq.c (make_compile_option_value): include frozen_string_literal*
diff --git a/lib/forwardable.rb b/lib/forwardable.rb
index d814a756fa..c24c8d8630 100644
--- a/lib/forwardable.rb
+++ b/lib/forwardable.rb
@@ -182,7 +182,7 @@ module Forwardable
begin
#{accessor}.__send__(:#{method}, *args, &block)
rescue ::Exception
- $@.delete_if{|s| Forwardable::FILE_REGEXP =~ s} unless Forwardable::debug
+ $@.delete_if{|s| ::Forwardable::FILE_REGEXP =~ s} unless ::Forwardable::debug
::Kernel::raise
end
end
@@ -274,7 +274,7 @@ module SingleForwardable
begin
#{accessor}.__send__(:#{method}, *args, &block)
rescue ::Exception
- $@.delete_if{|s| Forwardable::FILE_REGEXP =~ s} unless Forwardable::debug
+ $@.delete_if{|s| ::Forwardable::FILE_REGEXP =~ s} unless ::Forwardable::debug
::Kernel::raise
end
end
diff --git a/test/test_forwardable.rb b/test/test_forwardable.rb
index 9b26019893..6dd015e5a4 100644
--- a/test/test_forwardable.rb
+++ b/test/test_forwardable.rb
@@ -110,6 +110,19 @@ class TestForwardable < Test::Unit::TestCase
assert_not_match(/\/forwardable\.rb/, e.backtrace[0])
end
+ class Foo2 < BasicObject
+ extend ::Forwardable
+
+ def_delegator :bar, :baz
+ end
+
+ def test_basicobject_subclass
+ bug11616 = '[ruby-core:71176] [Bug #11616]'
+ assert_raise_with_message(NameError, /`bar'/, bug11616) {
+ Foo2.new.baz
+ }
+ end
+
private
def forwardable_class(&block)