class RuboCop::Cop::Style::SlicingWithRange
Checks that arrays are sliced with endless ranges instead of ‘ary` on Ruby 2.6+.
@safety
This cop is unsafe because `x..-1` and `x..` are only guaranteed to be equivalent for `Array#[]`, and the cop cannot determine what class the receiver is. For example: [source,ruby] ---- sum = proc { |ary| ary.sum } sum[-3..-1] # => -6 sum[-3..] # Hangs forever ----
@example
# bad items[1..-1] # good items[1..]
Constants
- MSG
- RESTRICT_ON_SEND
Public Instance Methods
on_send(node)
click to toggle source
# File lib/rubocop/cop/style/slicing_with_range.rb, line 40 def on_send(node) return unless node.arguments.count == 1 return unless range_till_minus_one?(node.arguments.first) add_offense(node.first_argument) do |corrector| corrector.remove(node.first_argument.end) end end