class RuboCop::Cop::Sorbet::OneAncestorPerLine
This cop ensures one ancestor per requires_ancestor line rather than chaining them as a comma-separated list.
@example
# bad module SomeModule requires_ancestor Kernel, Minitest::Assertions end # good module SomeModule requires_ancestor Kernel requires_ancestor Minitest::Assertions end
Constants
- MSG
Public Instance Methods
autocorrect(node)
click to toggle source
# File lib/rubocop/cop/sorbet/one_ancestor_per_line.rb, line 51 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
on_class(node)
click to toggle source
# File lib/rubocop/cop/sorbet/one_ancestor_per_line.rb, line 45 def on_class(node) return unless abstract?(node) return unless requires_ancestors(node) process_node(node) end
on_module(node)
click to toggle source
# File lib/rubocop/cop/sorbet/one_ancestor_per_line.rb, line 39 def on_module(node) return unless node.body return unless requires_ancestors(node) process_node(node) end
Private Instance Methods
new_ra_line(indent_count)
click to toggle source
# File lib/rubocop/cop/sorbet/one_ancestor_per_line.rb, line 67 def new_ra_line(indent_count) indents = " " * indent_count indented_ra_call = "#{indents}requires_ancestor " "\n#{indented_ra_call}" end
process_node(node)
click to toggle source
# File lib/rubocop/cop/sorbet/one_ancestor_per_line.rb, line 61 def process_node(node) requires_ancestors(node).each do |ra| add_offense(ra.child_nodes[1]) if more_than_one_ancestor(ra) end end