Fix Style/VerboseBlock rule to work with binary operations

This commit is contained in:
Sijawusz Pur Rahnama 2023-06-29 08:14:36 +02:00
parent e1f5c81804
commit 4d0125a0f3
2 changed files with 5 additions and 1 deletions

View file

@ -25,6 +25,7 @@ module Ameba::Rule::Style
(1..3).map { |l| l.to_i64 * l.to_i64 }
(1..3).map { |m| m.to_s[start: m.to_i64, count: 3]? }
(1..3).map { |n| n.to_s.split.map { |z| n.to_i * z.to_i }.join }
(1..3).map { |o| o.foo = foos[o.abs]? || 0 }
CRYSTAL
end

View file

@ -99,6 +99,9 @@ module Ameba::Rule::Style
node.named_args.try &.each do |arg|
i += reference_count(arg.value, obj)
end
when Crystal::BinaryOp
i += reference_count(node.left, obj)
i += reference_count(node.right, obj)
when Crystal::Block
i += reference_count(node.body, obj)
when Crystal::Var
@ -230,7 +233,7 @@ module Ameba::Rule::Style
# we filter out the blocks that are of call type - `i.to_i64.odd?`
return unless (body = block.body).is_a?(Crystal::Call)
# we need to "unwind" the chain challs, so the final receiver object
# we need to "unwind" the chain calls, so the final receiver object
# ends up being a variable - `i`
obj = body.obj
while obj.is_a?(Crystal::Call)