class RuboCop::Cop::Style::StructInheritance
Person = Struct.new(:first_name, :last_name)
# good
end
class Person < Struct.new(:first_name, :last_name)
# bad
@example
This cop checks for inheritance from Struct.new.
def on_class(node)
def on_class(node) _name, superclass, _body = *node return unless struct_constructor?(superclass) add_offense(node, superclass.source_range, MSG) end
def struct_constructor?(node)
def struct_constructor?(node) return false unless node send_node = node.block_type? ? node.children.first : node return false unless send_node.send_type? receiver, method_name = *send_node receiver && receiver.const_type? && receiver.children.last == :Struct && method_name == :new end