class RuboCop::Cop::Lint::InheritException

class C < StandardError; end
# good
class C < Exception; end
# bad
@example EnforcedStyle: standard_error
class C < RuntimeError; end
# good
class C < Exception; end
# bad
@example EnforcedStyle: runtime_error (default)
‘RuntimeError` (default) or `StandardError` instead.
`StandardError`. It is configurable to suggest using either
and its standard library subclasses, excluding subclasses of
This cop looks for error classes inheriting from `Exception`

def autocorrect(node)

def autocorrect(node)
  lambda do |corrector|
    corrector.replace(node.loc.expression, preferred_base_class)
  end
end

def illegal_class_name?(class_node)

def illegal_class_name?(class_node)
  ILLEGAL_CLASSES.include?(class_node.const_name)
end

def message(node)

def message(node)
  format(MSG, prefer: preferred_base_class, current: node.const_name)
end

def on_class(node)

def on_class(node)
  _class, base_class, _body = *node
  return unless base_class && illegal_class_name?(base_class)
  add_offense(base_class)
end

def preferred_base_class

def preferred_base_class
  PREFERRED_BASE_CLASS[style]
end