Sha256: 8b462bfad4b0a0e3248490830a2c15d477ceb6a1454646ea215fa7403f5ba463
Contents?: true
Size: 1002 Bytes
Versions: 14
Compression:
Stored size: 1002 Bytes
Contents
# frozen_string_literal: true module RuboCop module Cop module Style # This cop checks for inheritance from Struct.new. # # @example # # bad # class Person < Struct.new(:first_name, :last_name) # def age # 42 # end # end # # # good # Person = Struct.new(:first_name, :last_name) do # def age # 42 # end # end class StructInheritance < Cop MSG = "Don't extend an instance initialized by `Struct.new`. " \ 'Use a block to customize the struct.' def on_class(node) return unless struct_constructor?(node.parent_class) add_offense(node, location: node.parent_class.source_range) end def_node_matcher :struct_constructor?, <<-PATTERN {(send (const nil? :Struct) :new ...) (block (send (const nil? :Struct) :new ...) ...)} PATTERN end end end end
Version data entries
14 entries across 14 versions & 2 rubygems