class RuboCop::Cop::Sorbet::SelectByIsA
strings_or_integers.grep(String)
# good
strings_or_integers.select { |e| e.kind_of?(String) }
strings_or_integers.filter { |e| e.is_a?(String) }
strings_or_integers.select { |e| e.is_a?(String) }
# bad
@example
Suggests using ‘grep` over `select` when using it only for type narrowing.
def on_send(node)
def on_send(node) block_node = node.block_node return unless block_node return unless type_narrowing_select?(block_node) add_offense(block_node) do |corrector| receiver = node.receiver type_class = block_node.body.children[2] navigation = node.csend_type? ? "&." : "." replacement = "#{receiver.source}#{navigation}grep(#{type_class.source})" corrector.replace(block_node, replacement) end end