class RuboCop::Cop::Style::ReturnNil

def on_return(node)

def on_return(node)
  # Check Lint/NonLocalExitFromIterator first before this cop
  node.each_ancestor(:block, :def, :defs) do |n|
    break if scoped_node?(n)
    send_node, args_node, _body_node = *n
    # if a proc is passed to `Module#define_method` or
    # `Object#define_singleton_method`, `return` will not cause a
    # non-local exit error
    break if define_method?(send_node)
    next if args_node.children.empty?
    return nil if chained_send?(send_node)
  end
  add_offense(node) unless correct_style?(node)
end