Project

General

Profile

Actions

Feature #15113

closed

Show warnings on unused blocks with Enumerable#all? any? one? none?

Added by fursich (Onishi Koji) over 5 years ago. Updated over 5 years ago.

Status:
Closed
Assignee:
-
Target version:
-
[ruby-core:88977]

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;)

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0