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?)