class RuboCop::Cop::Style::NilLambda

Checks for lambdas and procs that always return nil, which can be replaced with an empty lambda or proc instead.

@example

# bad
-> { nil }

lambda do
  next nil
end

proc { nil }

Proc.new do
  break nil
end

# good
-> {}

lambda do
end

-> (x) { nil if x }

proc {}

Proc.new { nil if x }

Constants

MSG

Public Instance Methods

on_block(node) click to toggle source
# File lib/rubocop/cop/style/nil_lambda.rb, line 46
def on_block(node) # rubocop:disable InternalAffairs/NumblockHandler
  return unless node.lambda? || node.proc?
  return unless nil_return?(node.body)

  message = format(MSG, type: node.lambda? ? 'lambda' : 'proc')
  add_offense(node, message: message) do |corrector|
    autocorrect(corrector, node)
  end
end

Private Instance Methods

autocorrect(corrector, node) click to toggle source
# File lib/rubocop/cop/style/nil_lambda.rb, line 58
def autocorrect(corrector, node)
  range = if node.single_line?
            range_with_surrounding_space(node.body.loc.expression)
          else
            range_by_whole_lines(node.body.loc.expression, include_final_newline: true)
          end

  corrector.remove(range)
end