summaryrefslogtreecommitdiff
path: root/lib/forwardable.rb
AgeCommit message (Collapse)Author
2022-12-05[ruby/forwardable] Bump version to 1.3.3Hiroshi SHIBATA
https://github.com/ruby/forwardable/commit/301687dbfa
2022-09-08[ruby/forwardable] Freeze VERSION and FORWARDABLE_VERSION to improve ↵rm155
Ractor-compliance https://github.com/ruby/forwardable/commit/c91f41f4fa
2021-06-29Prefer qualified names under ThreadNobuyoshi Nakada
2020-12-22Update library versions of the default gems.Hiroshi SHIBATA
They are followed up with https://github.com/ruby/ruby/commit/8fb02b7a97317090e3946e6f2d4a7d034f9699f1
2020-11-05Revert "Prefer #send over #__send__ when it is clear there is no possible ↵NARUSE, Yui
conflict" This reverts commit 4dba0c1a8e3cc08664872e637099c4e7d58d24d3. Matz's comment is "send is not deprecated. __send__ is safer". But "Prefer #send over #__send__" is not reasonable.
2020-11-05Prefer #send over #__send__ when it is clear there is no possible conflictBenoit Daloze
* Reverts part of 3198e7abd70bd2af977f2bb6c967e9df8f91adb0. * If the rule is #send should be deprecated, that should be ruled by matz, there is no such rule currently and gems seem to prefer #send overwhelmingly.
2020-10-27Separate `send` into `public_send` and `__send__`Nobuyoshi Nakada
2020-07-30Extract version number from the sourceNobuyoshi Nakada
"requiring version.rb" strategy has some issues. - cannot work when cross-compiling - often introduces wrong namespace - must know the superclasses - costs at each runtime than at build-time etc. Notes: Merged: https://github.com/ruby/ruby/pull/3375
2019-12-11[ruby/forwardable] Make def_*_delegator return name of method defined (Fixes ↵Jeremy Evans
#10) This restores compatibility with previous versions. This behavior was previously undefined, but it makes sense for the name of the defined method to be returned. https://github.com/ruby/forwardable/commit/a52ef3451e
2019-11-30[ruby/forwardable] Fix keyword argument separation warnings on Ruby 2.7+Jeremy Evans
Do so in a way that is also compatible with previous versions. https://github.com/ruby/forwardable/commit/b2dd340988
2019-10-26[ruby/forwardable] Remove string allocation in def_{instance,single}_delegatorsJeremy Evans
https://github.com/ruby/forwardable/commit/1a994c90e1
2019-10-26[ruby/forwardable] Make def_{instance,single}_delegators skip :__send__ and ↵Jeremy Evans
:__id__ Previously, __send__ and __id__ were skipped if provided as strings, but not skipped if provided as symbols. Fixes Ruby Bug 8855. https://github.com/ruby/forwardable/commit/2e61c8c66c
2019-10-26[ruby/forwardable] Extracted VERSION constant for gemspecHiroshi SHIBATA
https://github.com/ruby/forwardable/commit/387758d45a
2019-07-26Document and add spec for delegating to constants in ForwardableJeremy Evans
Fixes [Bug #13142]
2019-01-20[DOC] Refactors documentation for `Forwardable`nobu
[ruby-core:71281] [Misc #11639] From: Sam Morgan <s_morgan@me.com> git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66873 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-12Disable tailcall optimization [Bug #15303]nobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66349 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-07-25Promote Forwardable to default gems.hsbt
* lib/forwardable.rb: Added Forwardable::VERSION and re-use it. * lib/forwardable/forwardable.gemspec: Added initial gemspec. * tool/sync_default_gems.rb: Support forwaradable repository. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64042 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-12-12Add uplevel keyword to Kernel#warn and use itshyouhei
If uplevel keyword is given, the warning message is prepended with caller file and line information and the string "warning: ". The use of the uplevel keyword makes Kernel#warn format output similar to how rb_warn formats output. This patch modifies net/ftp and net/imap to use Kernel#warn instead of $stderr.puts or $stderr.printf, since they are used for printing warnings. This makes lib/cgi/core and tempfile use $stderr.puts instead of warn for debug logging, since they are used for debug printing and not for warning. This does not modify bundler, rubygems, or rdoc, as those are maintained outside of ruby and probably wish to remain backwards compatible with older ruby versions. rb_warn_m code is originally from nobu, but I've changed it so that it only includes the path and lineno from uplevel (not the method), and also prepends the string "warning: ", to make it more similar to rb_warn. From: Jeremy Evans code@jeremyevans.net Signed-off-by: Urabe Shyouhei shyouhei@ruby-lang.org git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61155 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-01-03forwardable.rb: fix branchesnobu
* lib/forwardable.rb (instance_delegate, single_delegate): fix inverted branches. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57257 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-01-03forwardable.rb: use defined?nobu
* lib/forwardable.rb (_delegator_method): use defined? operator instead of binding and calling unbound Kernel#respond_to?. a remedy for an performance bottleneck. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57256 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-01-03forwardable.rb: use defined?nobu
* lib/forwardable.rb (_delegator_method): use defined? operator instead of binding and calling unbound Kernel#respond_to?. a remedy for an performance bottleneck. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57255 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-11-20forwardable/impl.rbnobu
* lib/forwardable/impl.rb (_valid_method?, _compile_method): extract to separate implementation specific part. [ruby-core:78138] [Bug #12938] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56848 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-09-23forwardable.rb: remove debug printnobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56217 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-09-23forwardable.rb: private methodsnobu
* lib/forwardable.rb (_delegator_method): allow private methods to be delegated, with warnings. [ruby-core:77341] [Bug #12782] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56210 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-06-11* lib/forwardable.rb (_delegator_method): get rid of a warning whichusa
causes test failures introduced at r55376. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55381 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-06-11forwardable.rb: optimize awy __send__nobu
* lib/forwardable.rb (_delegator_method): remove __send__ call if possible, so that more optimizations will be enabled. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55376 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-06-11forwardable.rb: backtracenobu
* lib/forwardable.rb (_delegator_method): leave the backtrace untouched during accessor. forwardable.rb does not appear in the backtrace during delegated method because of tail-call optimization. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55372 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-06-10forwardable.rb: nodoc _delegator_method [ci skip]nobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55368 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-06-10forwardable.rb: fix for non-module objectsnobu
* lib/forwardable.rb (Forwardable._delegator_method): extract method generator and deal with non-module objects. [ruby-dev:49656] [Bug #12478] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55366 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-01-12* lib/forwardable.rb: Convert given accessors to String.sorah
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
2015-12-30forwardable.rb: adjust backtrace by tail callnobu
* lib/forwardable.rb (def_instance_delegator): adjust backtrace of method body by tail call optimization. adjusting the delegated target is still done by deleting backtrace. * lib/forwardable.rb (def_single_delegator): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53383 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-30Forwardable: Fix delegating to 'args' and 'block'nobu
* lib/forwardable.rb (def_instance_delegator) fix delegating to 'args' and 'block', clashing with local variables in generated methods. [ruby-core:72579] [Bug #11916] * lib/forwardable.rb (def_single_delegator): ditto. If you have a class that uses Forwardable to delegate a method to another object, and the method that returns the delegate object is called `args` or `block`, then Forwardable will fail to work. Here's a simple example: class ModelCreator extend Forwardable attr_reader :args def_delegator :args, :model_name def initialize(args) @args = args end end ModelCreator.new.model_name If you run the last line above, then you'll get: NoMethodError: undefined method `model_name' for []:Array This error occurs because `def_delegator` -- as it is written in Ruby -- uses metaprogramming to add methods to the class that will then delegate to the delegate object. So it's as if we had written: class ModelCreator extend Forwardable attr_reader :args def model_name(*args, &block) args.model_name(*args, &block) end def initialize(args) @args = args end end As you can see, `def_delegator` will not only forward the method call onto the delegate object, it will also forward any arguments provided as well. It is here that the bug arises: it splats all of the arguments into a variable which is called `args`, and because of how variable scope works in Ruby, it then attempts to call `model_name` on *this* variable and *not* our delegate object method. The fix is to call the delegate object method manually using `__send__`. (This assumes, of course, that the given receiver is, in fact, the name of a method and not the name of an instance variable, which is also a possibility.) We use `__send__` because the delegate object method could be private. So, that looks like this: def model_name(*args, &block) __send__(:args).model_name(*args, &block) end Because `def_delegators` and `delegate` use `def_delegator` internally, they also get this fix as well. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53381 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-16Add frozen_string_literal: false for all filesnaruse
When you change this to true, you may need to add more tests. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53141 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-23forwardable.rb: full qualify namesnobu
* 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
2015-10-23* lib/forwardable (def_instance_delegator, def_single_delegator):shugo
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
2013-05-23reapply r40839 [Fixes GH-316]zzak
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40906 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-23revert forwardable rdoc patch for demozzak
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40897 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-20reapply r40839 [Fixes GH-313]zzak
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40863 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-20Revert r40839 for demozzak
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40858 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-19* lib/forwardable.rb: Forwardable examples in overview were brokenzzak
Based on patch by @joem [Fixes GH-303] [Bug #8392] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40839 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-03-22forwardable.rb: reduce allocations in def_delegatorsnobu
* lib/forwardable.rb (Forwardable::FILE_REGEXP): create regexp object outside sources for eval, to reduce allocations in def_delegators wrappers. //o option does not make each regexps shared. patch by tmm1 (Aman Gupta) in [ruby-core:53620] [Bug #8143]. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39875 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-01-04* lib/forwardable.rb: Fix rdoc parameters for ::def_single_delegator.zzak
Patch by Vladimir Andrijevik [Github Fixes #230] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38689 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-01-03* lib/forwardable.rb (SingleForwardable): Fix example in overviewzzak
Patch by Vladimir Andrijevik [Github Fixes #231] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38679 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-12-07* doc/forwardable.rd: Remove stale documentation filezzak
* lib/forwardable.rb: Merge documentation from doc/forwardable.rd git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38249 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-08-21remove trainling spaces.nobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36750 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-22 * lib/forwardable.rb: Document def_delegator. Patch by Sandor Szucs.drbrain
[Ruby 1.9 - Bug #4752] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31685 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-19* lib: revert r31635-r31638 and untabify with expand(1).nobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31641 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-18 * lib: Convert tabs to spaces for ruby files perdrbrain
http://redmine.ruby-lang.org/projects/ruby/wiki/DeveloperHowto#coding-style Patch by Steve Klabnik [Ruby 1.9 - Bug #4730] Patch by Jason Dew [Ruby 1.9 - Feature #4718] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31635 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-11 * lib/forwardable.rb: support 'delegate :foo => :bar' for to meetkeiju
by specification of RDOC. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31507 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-06-23Clean warnings: unused variables.naruse
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28398 b2dd03c8-39d4-4d8f-98ff-823fe69b080e