lib/rubocop/cop/sorbet/forbid_mixes_in_class_methods.rb
# frozen_string_literal: true module RuboCop module Cop module Sorbet # 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 # ``` class ForbidMixesInClassMethods < ::RuboCop::Cop::Base MSG = "Do not use `mixes_in_class_methods`, use `extend ActiveSupport::Concern` instead." RESTRICT_ON_SEND = [:mixes_in_class_methods].freeze # @!method mixes_in_class_methods?(node) def_node_matcher(:mixes_in_class_methods?, <<~PATTERN) (send {self | nil? | (const (const {cbase | nil?} :T) :Helpers)} :mixes_in_class_methods ...) PATTERN def on_send(node) add_offense(node) if mixes_in_class_methods?(node) end alias_method :on_csend, :on_send end end end end