class RuboCop::Cop::Lint::RefinementImportMethods

Checks if ‘include` or `prepend` is called in `refine` block. These methods are deprecated and should be replaced with `Refinement#import_methods`.

It emulates deprecation warnings in Ruby 3.1.

@safety

This cop's autocorrection is unsafe because `include M` will affect the included class
if any changes are made to module `M`.
On the other hand, `import_methods M` uses a snapshot of method definitions,
thus it will not be affected if module `M` changes.

@example

# bad
refine Foo do
  include Bar
end

# bad
refine Foo do
  prepend Bar
end

# good
refine Foo do
  import_methods Bar
end

Constants

MSG
RESTRICT_ON_SEND

Public Instance Methods

on_send(node) click to toggle source
# File lib/rubocop/cop/lint/refinement_import_methods.rb, line 42
def on_send(node)
  return if node.receiver
  return unless node.parent.block_type? && node.parent.method?(:refine)

  add_offense(node.loc.selector, message: format(MSG, current: node.method_name))
end