Feature #15113
closedShow warnings on unused blocks with Enumerable#all? any? one? none?
Description
Let Array#any? (and related enumerable methods alike) to express warnings in case blocks are left unused.
Background
Certain methods in Array silently ignore the given blocks without any warnings, which sometimes causes 'invisible' bugs that are a bit hard to detect.
>> [1,2,3].any?(2) {|it| it > 10}
=> true
On the other hand, Array#index warns you (kindly enough!) when your blocks are left unused.
>> [1,2,3].index(2) {|it| it > 10}
(irb):3: warning: given block not used
=> 1
Proposal
This PR is to let Enumerable#all?, #any?, #one, #none? (including similar methods with Array and Hash) to show warning messages so as that it behaves in consistent manner with what we see with Array#index.
Implementation
https://github.com/ruby/ruby/pull/1953
Adding one conditional branch per one method call, which would cost very low in terms of computational cost. (benchmark-driver suggested somewhere around 1.00x-1.01x slower with Enumurator#any?)
Hopefully it would help reduce some of the unnecessary source of pain, and help us code happily;)