Sha256: 441c5044893f1e010ffc1f88ee95b95eade71d5d6ce6d468aa363cbfb6bb503c
Contents?: true
Size: 1.88 KB
Versions: 5
Compression:
Stored size: 1.88 KB
Contents
module Mutant class Mutator class Node class Literal # Mutator for hash literals class Hash < self handle(Rubinius::AST::HashLiteral) private # Emit mutations # # @return [undefined] # # @api private # def dispatch emit_nil emit_values(values) emit_element_presence emit_body end # Emit body mutations # # @return [undefined] # # @api private # def emit_body array.each_with_index do |element, index| dup = dup_array Mutator.each(element).each do |mutation| dup[index]=mutation emit_self(dup) end end end # Return array of values in literal # # @return [Array] # # @api private # def array node.array end # Return duplicate of array values in literal # # @return [Array] # # @api private # def dup_array array.dup end # Return values to mutate against # # @return [Array] # # @api private # def values [[], [new_nil, new_nil] + dup_array] end # Emit element presence mutations # # @return [undefined] # # @api private # def emit_element_presence 0.step(array.length-1, 2) do |index| contents = dup_array contents.delete_at(index) contents.delete_at(index) emit_self(contents) end end end end end end end
Version data entries
5 entries across 5 versions & 1 rubygems