diff --git a/spec/ameba/rule/style/is_a_filter_spec.cr b/spec/ameba/rule/style/is_a_filter_spec.cr index 68552d72..a45a96ed 100644 --- a/spec/ameba/rule/style/is_a_filter_spec.cr +++ b/spec/ameba/rule/style/is_a_filter_spec.cr @@ -47,11 +47,11 @@ module Ameba::Rule::Style end context "macro" do - it "reports in macro scope" do + it "doesn't report in macro scope" do source = Source.new %( {{ [1, 2, nil].reject(&.nil?) }} ) - subject.catch(source).should_not be_valid + subject.catch(source).should be_valid end end diff --git a/src/ameba/rule/style/is_a_filter.cr b/src/ameba/rule/style/is_a_filter.cr index 0fb76a77..6dd4a777 100644 --- a/src/ameba/rule/style/is_a_filter.cr +++ b/src/ameba/rule/style/is_a_filter.cr @@ -46,6 +46,15 @@ module Ameba::Rule::Style MSG = "Use `%s(%s)` instead of `%s {...}`" + def test(source) + AST::NodeVisitor.new self, source, skip: [ + Crystal::Macro, + Crystal::MacroExpression, + Crystal::MacroIf, + Crystal::MacroFor, + ] + end + def test(source, node : Crystal::Call) return unless node.name.in?(filter_names) return unless (block = node.block)