lib/rubocop/cop/performance/bind_call.rb in rubocop-performance-1.7.1 vs lib/rubocop/cop/performance/bind_call.rb in rubocop-performance-1.8.0
- old
+ new
@@ -17,12 +17,13 @@
# umethod.bind(obj).(foo, bar)
#
# # good
# umethod.bind_call(obj, foo, bar)
#
- class BindCall < Cop
+ class BindCall < Base
include RangeHelp
+ extend AutoCorrector
extend TargetRubyVersion
minimum_target_ruby_version 2.7
MSG = 'Use `bind_call(%<bind_arg>s%<comma>s%<call_args>s)` ' \
@@ -35,31 +36,20 @@
$(...)) :call
$...)
PATTERN
def on_send(node)
- bind_with_call_method?(node) do |receiver, bind_arg, call_args_node|
- range = correction_range(receiver, node)
+ return unless (receiver, bind_arg, call_args_node = bind_with_call_method?(node))
- call_args = build_call_args(call_args_node)
-
- message = message(bind_arg.source, call_args)
-
- add_offense(node, location: range, message: message)
- end
- end
-
- def autocorrect(node)
- receiver, bind_arg, call_args_node = bind_with_call_method?(node)
-
range = correction_range(receiver, node)
-
call_args = build_call_args(call_args_node)
- call_args = ", #{call_args}" unless call_args.empty?
+ message = message(bind_arg.source, call_args)
- replacement_method = "bind_call(#{bind_arg.source}#{call_args})"
+ add_offense(range, message: message) do |corrector|
+ call_args = ", #{call_args}" unless call_args.empty?
- lambda do |corrector|
+ replacement_method = "bind_call(#{bind_arg.source}#{call_args})"
+
corrector.replace(range, replacement_method)
end
end
private