From 3845c0f86305a7dc5ad865cf59cca8c23eb82981 Mon Sep 17 00:00:00 2001 From: Benjamin Quorning Date: Fri, 10 Jul 2020 10:52:19 +0200 Subject: [PATCH] Don't spend CPU finding the same node twice --- lib/rubocop/cop/rspec/leading_subject.rb | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/lib/rubocop/cop/rspec/leading_subject.rb b/lib/rubocop/cop/rspec/leading_subject.rb index 9080e9a77..7bc60c64e 100644 --- a/lib/rubocop/cop/rspec/leading_subject.rb +++ b/lib/rubocop/cop/rspec/leading_subject.rb @@ -47,7 +47,7 @@ def check_previous_nodes(node) if offending?(sibling) msg = format(MSG, offending: sibling.method_name) add_offense(node, message: msg) do |corrector| - autocorrect(corrector, node) + autocorrect(corrector, node, sibling) end end @@ -57,21 +57,16 @@ def check_previous_nodes(node) private - def autocorrect(corrector, node) - first_node = find_first_offending_node(node) + def autocorrect(corrector, node, sibling) RuboCop::RSpec::Corrector::MoveNode.new( node, corrector, processed_source - ).move_before(first_node) + ).move_before(sibling) end def offending?(node) let?(node) || hook?(node) || example?(node) end - def find_first_offending_node(node) - node.parent.children.find { |sibling| offending?(sibling) } - end - def in_spec_block?(node) node.each_ancestor(:block).any? do |ancestor| example?(ancestor)