Class: RuboCop::Cop::Sorbet::ForbidMixesInClassMethods

Inherits:
Base
  • Object
show all
Defined in:
lib/rubocop/cop/sorbet/forbid_mixes_in_class_methods.rb

Overview

Check that code does not call mixes_in_class_methods from Sorbet T::Helpers.

Good:

module M
  extend ActiveSupport::Concern

  class_methods do
    ...
  end
end

Bad:

module M
  extend T::Helpers

  module ClassMethods
    ...
  end

  mixes_in_class_methods(ClassMethods)
end

Constant Summary collapse

MSG =
"Do not use `mixes_in_class_methods`, use `extend ActiveSupport::Concern` instead."
RESTRICT_ON_SEND =
[:mixes_in_class_methods].freeze

Instance Method Summary collapse

Instance Method Details

#mixes_in_class_methods?(node) ⇒ Object



38
39
40
# File 'lib/rubocop/cop/sorbet/forbid_mixes_in_class_methods.rb', line 38

def_node_matcher(:mixes_in_class_methods?, <<~PATTERN)
  (send {self | nil? | (const (const {cbase | nil?} :T) :Helpers)} :mixes_in_class_methods ...)
PATTERN

#on_send(node) ⇒ Object Also known as: on_csend



42
43
44
# File 'lib/rubocop/cop/sorbet/forbid_mixes_in_class_methods.rb', line 42

def on_send(node)
  add_offense(node) if mixes_in_class_methods?(node)
end