rubocops: fix OnOs block checks.
This wasn't correctly flagging the use of `on_os` in `test do` as invalid.
This commit is contained in:
parent
5f5af43244
commit
03f7b254e9
@ -404,18 +404,15 @@ module RuboCop
|
|||||||
no_on_os_block_names.each do |formula_block_name|
|
no_on_os_block_names.each do |formula_block_name|
|
||||||
block_node = find_block(body_node, formula_block_name)
|
block_node = find_block(body_node, formula_block_name)
|
||||||
next unless block_node
|
next unless block_node
|
||||||
next unless method_called_in_block?(block_node, on_method_name)
|
next unless block_method_called_in_block?(block_node, on_method_name)
|
||||||
|
|
||||||
problem "Don't use '#{on_method_name}' in '#{formula_block_name} do', " \
|
problem "Don't use '#{on_method_name}' in '#{formula_block_name} do', " \
|
||||||
"use '#{if_method_and_class}' instead." do |corrector|
|
"use '#{if_method_and_class}' instead." do |corrector|
|
||||||
block_node = offending_node.parent
|
|
||||||
next if block_node.type != :block
|
|
||||||
|
|
||||||
# TODO: could fix corrector to handle this but punting for now.
|
# TODO: could fix corrector to handle this but punting for now.
|
||||||
next if block_node.single_line?
|
next if offending_node.single_line?
|
||||||
|
|
||||||
source_range = offending_node.source_range.join(offending_node.parent.loc.begin)
|
source_range = offending_node.send_node.source_range.join(offending_node.body.source_range.begin)
|
||||||
corrector.replace(source_range, if_method_and_class)
|
corrector.replace(source_range, "#{if_method_and_class}\n")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@ -285,10 +285,10 @@ module RuboCop
|
|||||||
nil
|
nil
|
||||||
end
|
end
|
||||||
|
|
||||||
# Check if a method is called inside a block.
|
# Check if a block method is called inside a block.
|
||||||
def method_called_in_block?(node, method_name)
|
def block_method_called_in_block?(node, method_name)
|
||||||
block_body = node.children[2]
|
node.body.each_child_node do |call_node|
|
||||||
block_body.each_child_node(:send) do |call_node|
|
next if !call_node.block_type? && !call_node.send_type?
|
||||||
next unless call_node.method_name == method_name
|
next unless call_node.method_name == method_name
|
||||||
|
|
||||||
@offensive_node = call_node
|
@offensive_node = call_node
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user