Class: Mutant::Mutator::Node

Inherits:
Mutant::Mutator show all
Includes:
AbstractType, AST::NamedChildren, AST::NodePredicates, AST::Nodes, AST::Sexp, Unparser::Constants
Defined in:
lib/mutant/mutator/node.rb,
lib/mutant/mutator/node/if.rb,
lib/mutant/mutator/node/case.rb,
lib/mutant/mutator/node/dstr.rb,
lib/mutant/mutator/node/dsym.rb,
lib/mutant/mutator/node/mlhs.rb,
lib/mutant/mutator/node/next.rb,
lib/mutant/mutator/node/noop.rb,
lib/mutant/mutator/node/send.rb,
lib/mutant/mutator/node/when.rb,
lib/mutant/mutator/node/begin.rb,
lib/mutant/mutator/node/block.rb,
lib/mutant/mutator/node/break.rb,
lib/mutant/mutator/node/const.rb,
lib/mutant/mutator/node/masgn.rb,
lib/mutant/mutator/node/splat.rb,
lib/mutant/mutator/node/super.rb,
lib/mutant/mutator/node/yield.rb,
lib/mutant/mutator/node/binary.rb,
lib/mutant/mutator/node/define.rb,
lib/mutant/mutator/node/nthref.rb,
lib/mutant/mutator/node/rescue.rb,
lib/mutant/mutator/node/return.rb,
lib/mutant/mutator/node/zsuper.rb,
lib/mutant/mutator/node/defined.rb,
lib/mutant/mutator/node/generic.rb,
lib/mutant/mutator/node/kwbegin.rb,
lib/mutant/mutator/node/literal.rb,
lib/mutant/mutator/node/op_asgn.rb,
lib/mutant/mutator/node/or_asgn.rb,
lib/mutant/mutator/node/resbody.rb,
lib/mutant/mutator/node/restarg.rb,
lib/mutant/mutator/node/and_asgn.rb,
lib/mutant/mutator/node/argument.rb,
lib/mutant/mutator/node/blockarg.rb,
lib/mutant/mutator/node/arguments.rb,
lib/mutant/mutator/node/send/index.rb,
lib/mutant/mutator/node/literal/nil.rb,
lib/mutant/mutator/node/send/binary.rb,
lib/mutant/mutator/node/literal/hash.rb,
lib/mutant/mutator/node/literal/array.rb,
lib/mutant/mutator/node/literal/float.rb,
lib/mutant/mutator/node/literal/range.rb,
lib/mutant/mutator/node/literal/regex.rb,
lib/mutant/mutator/node/literal/fixnum.rb,
lib/mutant/mutator/node/literal/string.rb,
lib/mutant/mutator/node/literal/symbol.rb,
lib/mutant/mutator/node/literal/boolean.rb,
lib/mutant/mutator/node/conditional_loop.rb,
lib/mutant/mutator/node/match_current_line.rb,
lib/mutant/mutator/node/named_value/access.rb,
lib/mutant/mutator/node/send/attribute_assignment.rb,
lib/mutant/mutator/node/named_value/constant_assignment.rb,
lib/mutant/mutator/node/named_value/variable_assignment.rb

Overview

Abstract base class for node mutators

Defined Under Namespace

Modules: NamedValue Classes: AndAsgn, Argument, Arguments, Begin, Binary, Block, Blockarg, Break, Case, ConditionalLoop, Const, Define, Defined, Dstr, Dsym, Generic, If, Kwbegin, Literal, MLHS, MatchCurrentLine, MultipleAssignment, Next, Noop, NthRef, OpAsgn, OrAsgn, Resbody, Rescue, Restarg, Return, Send, Splat, Super, When, Yield, ZSuper

Constant Summary

Constants included from AST::Nodes

AST::Nodes::N_EMPTY, AST::Nodes::N_EMPTY_SUPER, AST::Nodes::N_FALSE, AST::Nodes::N_INFINITY, AST::Nodes::N_NAN, AST::Nodes::N_NEGATIVE_INFINITY, AST::Nodes::N_NIL, AST::Nodes::N_RAISE, AST::Nodes::N_SELF, AST::Nodes::N_TRUE, AST::Nodes::N_ZSUPER

Instance Attribute Summary

Attributes inherited from Mutant::Mutator

#input, #parent

Class Method Summary collapse

Methods included from AST::NamedChildren

included

Methods inherited from Mutant::Mutator

each

Class Method Details

.define_named_child(name, index) ⇒ undefined

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Helper to define a named child

Parameters:

  • node (Parser::AST::Node)
  • index (Fixnum)

Returns:

  • (undefined)


21
22
23
24
25
26
27
28
29
30
31
# File 'lib/mutant/mutator/node.rb', line 21

def self.define_named_child(name, index)
  super

  define_method("emit_#{name}_mutations") do |&block|
    mutate_child(index, &block)
  end

  define_method("emit_#{name}") do |node|
    emit_child_update(index, node)
  end
end