Update Style/RedundantSort
to be unsafe
#10122
Merged
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.
In an array where there are multiple elements where
a <=> b == 0
, or where the transformation done by the block has the same result, there will be a different element returned betweensort.last
andmax
(orsort_by.last
andmax_by
), becausesort.last
will take the last element butmax
will return the first element. As such, this is not a safe change, as the specific element returned will change.Honestly, we should probably revert #10062 as well because that adds a special case for
size
that doesn't really exist in reality. In that issue,size
was the catalyst, but the exact same issue would happen withlength
, or any other transformation that results in multiple elements having the same value. If we revert #10062, then #10119 can be closed as well. If this is desired, I'll update this PR to include the revert and add the test case from #10119 which is still valueable.Before submitting the PR make sure the following are checked:
[Fix #issue-number]
(if the related issue exists).master
(if not - rebase it).bundle exec rake default
. It executes all tests and runs RuboCop on its own code.{change_type}_{change_description}.md
if the new code introduces user-observable changes. See changelog entry format for details.