aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorsorah <sorah@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-01-12 11:19:25 +0000
committersorah <sorah@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-01-12 11:19:25 +0000
commitf425e0fc2bb0be9be35ac4822517c333c55747bf (patch)
tree5bee6aed657fcd07972d98af4ad4aafa6bf17158 /lib
parent4a5d3572e62ba11f55c704eb391aec6710205a28 (diff)
downloadruby-f425e0fc2bb0be9be35ac4822517c333c55747bf.tar.gz
* lib/forwardable.rb: Convert given accessors to String.
r53381 changed to accept only Symbol or String for accessors, but there are several rubygems that pass classes (e.g. Array, Hash, ...) as accessors. Prior r53381, it was accepted because Class#to_s returns its class name. After r53381 given accessors are checked with define_method, but it accepts only Symbol or String, otherwise raises TypeError. def_delegator Foo, :some_method This change is to revert unwanted incompatibility. But this behavior may change in the future. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53511 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib')
-rw-r--r--lib/forwardable.rb2
1 files changed, 2 insertions, 0 deletions
diff --git a/lib/forwardable.rb b/lib/forwardable.rb
index 390e1460cf..2ea0aa1d77 100644
--- a/lib/forwardable.rb
+++ b/lib/forwardable.rb
@@ -178,6 +178,7 @@ module Forwardable
# q.push 23 #=> NoMethodError
#
def def_instance_delegator(accessor, method, ali = method)
+ accessor = accessor.to_s
if method_defined?(accessor) || private_method_defined?(accessor)
accessor = "#{accessor}()"
end
@@ -279,6 +280,7 @@ module SingleForwardable
# the method of the same name in _accessor_). If _new_name_ is
# provided, it is used as the name for the delegate method.
def def_single_delegator(accessor, method, ali = method)
+ accessor = accessor.to_s
if method_defined?(accessor) || private_method_defined?(accessor)
accessor = "#{accessor}()"
end