class RuboCop::Cop::Performance::BlockGivenWithExplicitBlock
This cop identifies unnecessary use of a `block_given?` where explicit check of block argument would suffice.
@example
# bad def method(&block) do_something if block_given? end # good def method(&block) do_something if block end # good - block is reassigned def method(&block) block ||= -> { do_something } warn "Using default ..." unless block_given? # ... end
Constants
- MSG
- RESTRICT_ON_SEND
Public Instance Methods
on_send(node)
click to toggle source
# File lib/rubocop/cop/performance/block_given_with_explicit_block.rb, line 35 def on_send(node) def_node = node.each_ancestor(:def, :defs).first return unless def_node block_arg = def_node.arguments.find(&:blockarg_type?) return unless block_arg block_arg_name = block_arg.loc.name.source.to_sym return if reassigns_block_arg?(def_node, block_arg_name) add_offense(node) do |corrector| corrector.replace(node, block_arg_name) end end