Class: RuboCop::Cop::Sorbet::CapitalizedTypeParameters

Inherits:
Base
  • Object
show all
Extended by:
AutoCorrector
Includes:
SignatureHelp
Defined in:
lib/rubocop/cop/sorbet/signatures/capitalized_type_parameters.rb

Overview

Ensure type parameters used in generic methods are always capitalized.

Examples:


# bad
sig { type_parameters(:x).params(a: T.type_parameter(:x)).void }
def foo(a); end

# good
sig { type_parameters(:X).params(a: T.type_parameter(:X)).void }
def foo(a: 1); end

Constant Summary collapse

MSG =
"Type parameters must be capitalized."
RESTRICT_ON_SEND =
[:type_parameter].freeze

Instance Method Summary collapse

Methods included from SignatureHelp

#bare_sig?, #on_block, #sig_with_runtime?, #sig_without_runtime?, #signature?

Instance Method Details

#on_csend(node) ⇒ Object



51
52
53
# File 'lib/rubocop/cop/sorbet/signatures/capitalized_type_parameters.rb', line 51

def on_csend(node)
  check_type_parameters_case(node) if t_type_parameter?(node)
end

#on_send(node) ⇒ Object



47
48
49
# File 'lib/rubocop/cop/sorbet/signatures/capitalized_type_parameters.rb', line 47

def on_send(node)
  check_type_parameters_case(node) if t_type_parameter?(node)
end

#on_signature(node) ⇒ Object



35
36
37
38
39
40
41
42
43
44
45
# File 'lib/rubocop/cop/sorbet/signatures/capitalized_type_parameters.rb', line 35

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

#t_type_parameter?(node) ⇒ Object



31
32
33
# File 'lib/rubocop/cop/sorbet/signatures/capitalized_type_parameters.rb', line 31

def_node_matcher(:t_type_parameter?, <<-PATTERN)
  (send (const {nil? | cbase} :T) :type_parameter ...)
PATTERN

#type_parameters?(node) ⇒ Object



26
27
28
# File 'lib/rubocop/cop/sorbet/signatures/capitalized_type_parameters.rb', line 26

def_node_matcher(:type_parameters?, <<-PATTERN)
  (send nil? :type_parameters ...)
PATTERN