Issue #15113 has been updated by shevegen (Robert A. Heiler).


I think nobu committed it already (if it is the same one)

https://git.ruby-lang.org/ruby.git/commit/?id=384fda18b885872aacf225ac6ad7805fb101e497

I guess it is a useful change; reminds me a bit of the did-you-mean gem, in spirit at
least (both sort of look at possible errors made by humans; and I guess in most or all
cases, where there is no block for these methods, the human user may indeed just have
forgotten it).

----------------------------------------
Feature #15113: Show warnings on unused blocks with Enumerable#all? any? one? none?
https://bugs.ruby-lang.org/issues/15113#change-74024

* Author: fursich (Onishi Koji)
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
----------------------------------------
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.

~~~ ruby
>> [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.

~~~ ruby
>> [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;)



-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>