class RuboCop::Cop::Sorbet::OneAncestorPerLine

end
requires_ancestor Minitest::Assertions
requires_ancestor Kernel
module SomeModule
# good
end
requires_ancestor Kernel, Minitest::Assertions
module SomeModule
# bad
@example
rather than chaining them as a comma-separated list.
This cop ensures one ancestor per requires_ancestor line

def autocorrect(node)

def autocorrect(node)
  -> (corrector) do
    ra_call = node.parent
    split_ra_calls = ra_call.source.gsub(/,\s+/, new_ra_line(ra_call.loc.column))
    corrector.replace(ra_call, split_ra_calls)
  end
end

def new_ra_line(indent_count)

def new_ra_line(indent_count)
  indents = " " * indent_count
  indented_ra_call = "#{indents}requires_ancestor "
  "\n#{indented_ra_call}"
end

def on_class(node)

def on_class(node)
  return unless abstract?(node)
  return unless requires_ancestors(node)
  process_node(node)
end

def on_module(node)

def on_module(node)
  return unless node.body
  return unless requires_ancestors(node)
  process_node(node)
end

def process_node(node)

def process_node(node)
  requires_ancestors(node).each do |ra|
    add_offense(ra.child_nodes[1]) if more_than_one_ancestor(ra)
  end
end