lib/mutant/mutator/node/send.rb in mutant-0.8.0 vs lib/mutant/mutator/node/send.rb in mutant-0.8.1

- old
+ new

@@ -22,10 +22,12 @@ gsub: %i[sub], eql?: %i[equal?], to_s: %i[to_str], to_i: %i[to_int], to_a: %i[to_ary], + at: %i[fetch], + :[] => %i[at fetch], :== => %i[eql? equal?], :>= => %i[> == eql? equal?], :<= => %i[< == eql? equal?], :> => %i[== >= eql? equal?], :< => %i[== <= eql? equal?] @@ -36,11 +38,10 @@ # Perform dispatch # # @return [undefined] # # @api private - # def dispatch emit_singletons if meta.index_assignment? run(Index::Assign) else @@ -51,36 +52,42 @@ # Perform non index dispatch # # @return [undefined] # # @api private - # def non_index_dispatch - case - when meta.binary_method_operator? + if meta.binary_method_operator? run(Binary) - when meta.attribute_assignment? + elsif meta.attribute_assignment? run(AttributeAssignment) else normal_dispatch end end - # Return arguments + # AST metadata for node # - # @return [Enumerable<Parser::AST::Node>] + # @return [AST::Meta::Send] # # @api private + def meta + AST::Meta::Send.new(node) + end + memoize :meta + + # Arguments being send # + # @return [Enumerable<Parser::AST::Node>] + # + # @api private alias_method :arguments, :remaining_children # Perform normal, non special case dispatch # # @return [undefined] # # @api private - # def normal_dispatch emit_naked_receiver emit_selector_replacement emit_argument_propagation mutate_receiver @@ -90,33 +97,28 @@ # Emit selector replacement # # @return [undefined] # # @api private - # def emit_selector_replacement - SELECTOR_REPLACEMENTS.fetch(selector, EMPTY_ARRAY).each do |replacement| - emit_selector(replacement) - end + SELECTOR_REPLACEMENTS.fetch(selector, EMPTY_ARRAY).each(&method(:emit_selector)) end # Emit naked receiver mutation # # @return [undefined] # # @api private - # def emit_naked_receiver emit(receiver) if receiver && !NOT_ASSIGNABLE.include?(receiver.type) end # Mutate arguments # # @return [undefined] # # @api private - # def mutate_arguments emit_type(receiver, selector) remaining_children_with_index.each do |_node, index| mutate_child(index) delete_child(index) @@ -126,22 +128,20 @@ # Emit argument propagation # # @return [undefined] # # @api private - # def emit_argument_propagation node = arguments.first emit(node) if arguments.one? && !NOT_STANDALONE.include?(node.type) end # Emit receiver mutations # # @return [undefined] # # @api private - # def mutate_receiver return unless receiver emit_implicit_self emit_receiver_mutations do |node| !n_nil?(node) @@ -151,10 +151,9 @@ # Emit implicit self mutation # # @return [undefined] # # @api private - # def emit_implicit_self emit_receiver(nil) if n_self?(receiver) && !( KEYWORDS.include?(selector) || METHOD_OPERATORS.include?(selector) || OP_ASSIGN.include?(parent_type) ||