mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* 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
This commit is contained in:
parent
4a5d3572e6
commit
f425e0fc2b
2 changed files with 18 additions and 0 deletions
16
ChangeLog
16
ChangeLog
|
@ -1,3 +1,19 @@
|
|||
Tue Jan 12 19:52:19 2016 sorah (Shota Fukumori) <her@sorah.jp>
|
||||
|
||||
* 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.
|
||||
|
||||
Mon Jan 12 18:41:41 2016 Martin Duerst <duerst@it.aoyama.ac.jp>
|
||||
|
||||
* string.c: made a variable name more grammatically correct
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue