lib/leftovers/ast/send_node.rb in leftovers-0.11.1 vs lib/leftovers/ast/send_node.rb in leftovers-0.11.2

- old
+ new

@@ -1,25 +1,38 @@ # frozen_string_literal: true module Leftovers module AST - class SendNode < ::Leftovers::AST::Node - include Leftovers::AST::HasArguments + class SendNode < Node + include HasArguments alias_method :receiver, :first alias_method :name, :second alias_method :to_sym, :second def to_s name.to_s end def arguments - @memo[:arguments] ||= children.drop(2) + @memo[:arguments] ||= if block_pass_argument? + children[2...-1] + else + children.drop(2) + end end def as_arguments_list first.as_arguments_list if name == :freeze + end + + def block_pass_argument? + last_child = children.last + last_child.respond_to?(:type) && last_child.type == :block_pass + end + + def block_given? + block_pass_argument? || parent&.type == :block end end end end