class RuboCop::Cop::Sorbet::CapitalizedTypeParameters
def foo(a: 1); end
sig { type_parameters(:X).params(a: T.type_parameter(:X)).void }
# good
def foo(a); end
sig { type_parameters(:x).params(a: T.type_parameter(:x)).void }
# bad
@example
Ensure type parameters used in generic methods are always capitalized.
def check_type_parameters_case(node)
def check_type_parameters_case(node) node.children[2..].each do |arg| next unless arg.is_a?(RuboCop::AST::SymbolNode) next if arg.value =~ /^[A-Z]/ add_offense(arg) do |corrector| corrector.replace(arg, arg.value.capitalize.to_sym.inspect) end end end
def on_csend(node)
def on_csend(node) check_type_parameters_case(node) if t_type_parameter?(node) end
def on_send(node)
def on_send(node) check_type_parameters_case(node) if t_type_parameter?(node) end
def on_signature(node)
def on_signature(node) send = node.children[2] while send&.send_type? if type_parameters?(send) check_type_parameters_case(send) end send = send.children[0] end end