class RuboCop::Cop::InternalAffairs::RedundantMessageArgument


add_offense(node, message: message(other_node))
add_offense(node, message: CUSTOM_MSG)
add_offense(node)
# good
add_offense(node, message: message(node))
add_offense(node, message: message)
add_offense(node, message: MSG)
# bad
@example
if they are defined.
will automatically use ‘#message` or `MSG` (in that order of priority)
Checks for redundant message arguments to `#add_offense`. This method

def find_offending_argument(searched_node, kwargs)

def find_offending_argument(searched_node, kwargs)
  kwargs.pairs.each do |pair|
    redundant_message_argument(pair) do |message_argument|
      node = message_method_call(message_argument)
      yield pair if !node || node == searched_node
    end
  end
end

def offending_range(node)

def offending_range(node)
  with_space = range_with_surrounding_space(node.loc.expression)
  range_with_surrounding_comma(with_space, :left)
end

def on_send(node)

def on_send(node)
  node_type_check(node) do |node_arg, kwargs|
    find_offending_argument(node_arg, kwargs) do |pair|
      add_offense(pair) do |corrector|
        range = offending_range(pair)
        corrector.remove(range)
      end
    end
  end
end