free_mutant/lib/mutant/mutator/node/loop_control.rb
2013-11-20 20:25:17 +01:00

35 lines
632 B
Ruby

# encoding: utf-8
module Mutant
class Mutator
class Node
# Mutator for loop control keywords
class LoopControl < Generic
INVERSE = IceNine.deep_freeze(
next: :break,
break: :next
)
handle(*INVERSE.keys)
private
# Emit mutations
#
# @return [undefined]
#
# @api private
#
def dispatch
super
children.each_index(&method(:delete_child))
emit(s(INVERSE.fetch(node.type), *children))
emit_nil
end
end # Next
end # Node
end # Mutator
end # Mutant