Sha256: 439db28e74679dc25f8c4c477de38dfdd793d751abb53c50de26438b97d981fb
Contents?: true
Size: 1.04 KB
Versions: 24
Compression:
Stored size: 1.04 KB
Contents
# frozen_string_literal: true module Mutant class Mutator class Node module NamedValue # Mutation emitter to handle variable assignment nodes class VariableAssignment < Node children :name, :value map = { gvasgn: '$', cvasgn: '@@', ivasgn: '@', lvasgn: EMPTY_STRING } MAP = IceNine.deep_freeze( map.transform_values { |prefix| [prefix, /^#{::Regexp.escape(prefix)}/] } ) handle(*MAP.keys) private def dispatch emit_singletons mutate_name emit_value_mutations if value # op asgn! end def mutate_name prefix, regexp = MAP.fetch(node.type) stripped = name.to_s.sub(regexp, EMPTY_STRING) Util::Symbol.call(stripped).each do |name| emit_name(:"#{prefix}#{name}") end end end # VariableAssignment end # NamedValue end # Node end # Mutator end # Mutant
Version data entries
24 entries across 24 versions & 1 rubygems