From 5c5220985eebd6ca92743d27e073a54bc194eb34 Mon Sep 17 00:00:00 2001 From: Margret Riegert Date: Wed, 29 Jan 2025 14:11:01 -0500 Subject: [PATCH] ImplicitReturnVisitor visit macro defs --- spec/ameba/rule/lint/unused_literal_spec.cr | 5 +++++ src/ameba/ast/visitors/implicit_return_visitor.cr | 13 +++++++++++++ 2 files changed, 18 insertions(+) diff --git a/spec/ameba/rule/lint/unused_literal_spec.cr b/spec/ameba/rule/lint/unused_literal_spec.cr index 5c86fccc9..97869ab96 100644 --- a/spec/ameba/rule/lint/unused_literal_spec.cr +++ b/spec/ameba/rule/lint/unused_literal_spec.cr @@ -302,6 +302,11 @@ module Ameba::Rule::Lint # ^^^ error: Literal value is not used end %} + + macro name(foo) + {% "bar" %} + # ^^^^^ error: Literal value is not used + end CRYSTAL end diff --git a/src/ameba/ast/visitors/implicit_return_visitor.cr b/src/ameba/ast/visitors/implicit_return_visitor.cr index a340ea3d8..85c7236ee 100644 --- a/src/ameba/ast/visitors/implicit_return_visitor.cr +++ b/src/ameba/ast/visitors/implicit_return_visitor.cr @@ -140,6 +140,19 @@ module Ameba::AST false end + def visit(node : Crystal::Macro) : Bool + @rule.test(@source, node, @stack.positive?) + + incr_stack do + node.args.each &.accept(self) + node.double_splat.try &.accept(self) + node.block_arg.try &.accept(self) + node.body.accept(self) + end + + false + end + def visit(node : Crystal::ClassDef | Crystal::ModuleDef) : Bool @rule.test(@source, node, @stack.positive?)