Add new Performance/RedundantEqualityComparisonBlock
cop
#213
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR adds new
Performance/RedundantEqualityComparisonBlock
cop.The cop checks for uses
Enumerable#all?
,Enumerable#any?
,Enumerable#one?
, andEnumerable#none?
are compared with===
or similar methods in block.By default,
Object#===
behaves the same asObject#==
, but this behavior is appropriately redefined in subclass. For example,Range#===
returnstrue
when argument is within the range.Therefore, It is marked as unsafe by default because
===
and==
do not always behave the same.cf. rails/rails#41363
Thank you for the cop idea @kamipo!
Before submitting the PR make sure the following are checked:
[Fix #issue-number]
(if the related issue exists).master
(if not - rebase it).and description in grammatically correct, complete sentences.
bundle exec rake default
. It executes all tests and RuboCop for itself, and generates the documentation.