Sha256: 30498286c4dbf35c3e70f7a6066675a256598ee198267d64d9723129e07e9ce0
Contents?: true
Size: 1.02 KB
Versions: 2
Compression:
Stored size: 1.02 KB
Contents
# frozen_string_literal: true module RuboCop module Cop module Performance # This cop identifies places where `caller[n]` # can be replaced by `caller(n..n).first`. # # @example # # bad # caller[n] # caller.first # # # good # caller(n..n).first # caller(1..1).first class Caller < Cop MSG = 'Use `caller(n..n)` instead of `caller[n]`.'.freeze SCOPE_METHODS = %i[first []].freeze def_node_matcher :caller_with_scope_method?, <<-PATTERN (send (send nil :caller ...) ${#{SCOPE_METHODS.map(&:inspect).join(' ')}} ...) PATTERN def on_send(node) return unless caller_with_scope_method?(node) && slow_caller?(node) add_offense(node, :selector) end private def slow_caller?(node) arguments = node.receiver.arguments arguments.empty? || (arguments.length == 1 && arguments[0].int_type?) end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
rubocop-0.49.1 | lib/rubocop/cop/performance/caller.rb |
rubocop-0.49.0 | lib/rubocop/cop/performance/caller.rb |