123456789_123456789_123456789_123456789_123456789_

Class: Prism::MutationCompiler

Relationships & Source Files
Extension / Inclusion / Inheritance Descendants
Subclasses:
Super Chains via Extension / Inclusion / Inheritance
Class Chain:
Instance Chain:
Inherits: Prism::Compiler
Defined in: lib/prism/mutation_compiler.rb

Overview

This visitor walks through the tree and copies each node as it is being visited. This is useful for consumers that want to mutate the tree, as you can change subtrees in place without effecting the rest of the tree.

Instance Method Summary

Compiler - Inherited

#visit

Visit an individual node.

#visit_alias_global_variable_node
#visit_alias_method_node
#visit_all

Visit a list of nodes.

#visit_alternation_pattern_node
#visit_and_node
#visit_arguments_node
#visit_array_node
#visit_array_pattern_node
#visit_assoc_node
#visit_assoc_splat_node
#visit_back_reference_read_node
#visit_begin_node
#visit_block_argument_node
#visit_block_local_variable_node
#visit_block_node
#visit_block_parameter_node
#visit_block_parameters_node
#visit_break_node
#visit_call_and_write_node
#visit_call_node
#visit_call_operator_write_node
#visit_call_or_write_node
#visit_call_target_node
#visit_capture_pattern_node
#visit_case_match_node
#visit_case_node
#visit_child_nodes

Visit the child nodes of the given node.

#visit_class_node
#visit_class_variable_and_write_node
#visit_class_variable_operator_write_node
#visit_class_variable_or_write_node
#visit_class_variable_read_node
#visit_class_variable_target_node
#visit_class_variable_write_node
#visit_constant_and_write_node
#visit_constant_operator_write_node
#visit_constant_or_write_node
#visit_constant_path_and_write_node
#visit_constant_path_node
#visit_constant_path_operator_write_node
#visit_constant_path_or_write_node
#visit_constant_path_target_node
#visit_constant_path_write_node
#visit_constant_read_node
#visit_constant_target_node
#visit_constant_write_node
#visit_def_node
#visit_defined_node
#visit_else_node
#visit_embedded_statements_node
#visit_embedded_variable_node
#visit_ensure_node
#visit_false_node
#visit_find_pattern_node
#visit_flip_flop_node
#visit_float_node
#visit_for_node
#visit_forwarding_arguments_node
#visit_forwarding_parameter_node
#visit_forwarding_super_node
#visit_global_variable_and_write_node
#visit_global_variable_operator_write_node
#visit_global_variable_or_write_node
#visit_global_variable_read_node
#visit_global_variable_target_node
#visit_global_variable_write_node
#visit_hash_node
#visit_hash_pattern_node
#visit_if_node
#visit_imaginary_node
#visit_implicit_node
#visit_implicit_rest_node
#visit_in_node
#visit_index_and_write_node
#visit_index_operator_write_node
#visit_index_or_write_node
#visit_index_target_node
#visit_instance_variable_and_write_node
#visit_instance_variable_operator_write_node
#visit_instance_variable_or_write_node
#visit_instance_variable_read_node
#visit_instance_variable_target_node
#visit_instance_variable_write_node
#visit_integer_node
#visit_interpolated_match_last_line_node
#visit_interpolated_regular_expression_node
#visit_interpolated_string_node
#visit_interpolated_symbol_node
#visit_interpolated_x_string_node
#visit_it_local_variable_read_node
#visit_it_parameters_node
#visit_keyword_hash_node
#visit_keyword_rest_parameter_node
#visit_lambda_node
#visit_local_variable_and_write_node
#visit_local_variable_operator_write_node
#visit_local_variable_or_write_node
#visit_local_variable_read_node
#visit_local_variable_target_node
#visit_local_variable_write_node
#visit_match_last_line_node
#visit_match_predicate_node
#visit_match_required_node
#visit_match_write_node
#visit_missing_node
#visit_module_node
#visit_multi_target_node
#visit_multi_write_node
#visit_next_node
#visit_nil_node
#visit_no_keywords_parameter_node
#visit_numbered_parameters_node
#visit_numbered_reference_read_node
#visit_optional_keyword_parameter_node
#visit_optional_parameter_node
#visit_or_node
#visit_parameters_node
#visit_parentheses_node
#visit_pinned_expression_node
#visit_pinned_variable_node
#visit_post_execution_node
#visit_pre_execution_node
#visit_program_node
#visit_range_node
#visit_rational_node
#visit_redo_node
#visit_regular_expression_node
#visit_required_keyword_parameter_node
#visit_required_parameter_node
#visit_rescue_modifier_node
#visit_rescue_node
#visit_rest_parameter_node
#visit_retry_node
#visit_return_node
#visit_self_node
#visit_shareable_constant_node
#visit_singleton_class_node
#visit_source_encoding_node
#visit_source_file_node
#visit_source_line_node
#visit_splat_node
#visit_statements_node
#visit_string_node
#visit_super_node
#visit_symbol_node
#visit_true_node
#visit_undef_node
#visit_unless_node
#visit_until_node
#visit_when_node
#visit_while_node
#visit_x_string_node
#visit_yield_node

Visitor - Inherited

#visit_alias_global_variable_node
#visit_alias_method_node
#visit_alternation_pattern_node
#visit_and_node
#visit_arguments_node
#visit_array_node
#visit_array_pattern_node
#visit_assoc_node
#visit_assoc_splat_node
#visit_back_reference_read_node
#visit_begin_node
#visit_block_argument_node
#visit_block_local_variable_node
#visit_block_node
#visit_block_parameter_node
#visit_block_parameters_node
#visit_break_node
#visit_call_and_write_node
#visit_call_node
#visit_call_operator_write_node
#visit_call_or_write_node
#visit_call_target_node
#visit_capture_pattern_node
#visit_case_match_node
#visit_case_node
#visit_class_node
#visit_class_variable_and_write_node
#visit_class_variable_operator_write_node
#visit_class_variable_or_write_node
#visit_class_variable_read_node
#visit_class_variable_target_node
#visit_class_variable_write_node
#visit_constant_and_write_node
#visit_constant_operator_write_node
#visit_constant_or_write_node
#visit_constant_path_and_write_node
#visit_constant_path_node
#visit_constant_path_operator_write_node
#visit_constant_path_or_write_node
#visit_constant_path_target_node
#visit_constant_path_write_node
#visit_constant_read_node
#visit_constant_target_node
#visit_constant_write_node
#visit_def_node
#visit_defined_node
#visit_else_node
#visit_embedded_statements_node
#visit_embedded_variable_node
#visit_ensure_node
#visit_false_node
#visit_find_pattern_node
#visit_flip_flop_node
#visit_float_node
#visit_for_node
#visit_forwarding_arguments_node
#visit_forwarding_parameter_node
#visit_forwarding_super_node
#visit_global_variable_and_write_node
#visit_global_variable_operator_write_node
#visit_global_variable_or_write_node
#visit_global_variable_read_node
#visit_global_variable_target_node
#visit_global_variable_write_node
#visit_hash_node
#visit_hash_pattern_node
#visit_if_node
#visit_imaginary_node
#visit_implicit_node
#visit_implicit_rest_node
#visit_in_node
#visit_index_and_write_node
#visit_index_operator_write_node
#visit_index_or_write_node
#visit_index_target_node
#visit_instance_variable_and_write_node
#visit_instance_variable_operator_write_node
#visit_instance_variable_or_write_node
#visit_instance_variable_read_node
#visit_instance_variable_target_node
#visit_instance_variable_write_node
#visit_integer_node
#visit_interpolated_match_last_line_node
#visit_interpolated_regular_expression_node
#visit_interpolated_string_node
#visit_interpolated_symbol_node
#visit_interpolated_x_string_node
#visit_it_local_variable_read_node
#visit_it_parameters_node
#visit_keyword_hash_node
#visit_keyword_rest_parameter_node
#visit_lambda_node
#visit_local_variable_and_write_node
#visit_local_variable_operator_write_node
#visit_local_variable_or_write_node
#visit_local_variable_read_node
#visit_local_variable_target_node
#visit_local_variable_write_node
#visit_match_last_line_node
#visit_match_predicate_node
#visit_match_required_node
#visit_match_write_node
#visit_missing_node
#visit_module_node
#visit_multi_target_node
#visit_multi_write_node
#visit_next_node
#visit_nil_node
#visit_no_keywords_parameter_node
#visit_numbered_parameters_node
#visit_numbered_reference_read_node
#visit_optional_keyword_parameter_node
#visit_optional_parameter_node
#visit_or_node
#visit_parameters_node
#visit_parentheses_node
#visit_pinned_expression_node
#visit_pinned_variable_node
#visit_post_execution_node
#visit_pre_execution_node
#visit_program_node
#visit_range_node
#visit_rational_node
#visit_redo_node
#visit_regular_expression_node
#visit_required_keyword_parameter_node
#visit_required_parameter_node
#visit_rescue_modifier_node
#visit_rescue_node
#visit_rest_parameter_node
#visit_retry_node
#visit_return_node
#visit_self_node
#visit_shareable_constant_node
#visit_singleton_class_node
#visit_source_encoding_node
#visit_source_file_node
#visit_source_line_node
#visit_splat_node
#visit_statements_node
#visit_string_node
#visit_super_node
#visit_symbol_node
#visit_true_node
#visit_undef_node
#visit_unless_node
#visit_until_node
#visit_when_node
#visit_while_node
#visit_x_string_node
#visit_yield_node

BasicVisitor - Inherited

#visit

Calls accept on the given node if it is not nil, which in turn should call back into this visitor by calling the appropriate visit_* method.

#visit_all

Visits each node in nodes by calling accept on each one.

#visit_child_nodes

Visits the child nodes of node by calling accept on each one.

Instance Method Details

#visit_alias_global_variable_node(node)

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 15

def visit_alias_global_variable_node(node)
  node.copy(new_name: visit(node.new_name), old_name: visit(node.old_name))
end

#visit_alias_method_node(node)

Copy a AliasMethodNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 20

def visit_alias_method_node(node)
  node.copy(new_name: visit(node.new_name), old_name: visit(node.old_name))
end

#visit_alternation_pattern_node(node)

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 25

def visit_alternation_pattern_node(node)
  node.copy(left: visit(node.left), right: visit(node.right))
end

#visit_and_node(node)

Copy a AndNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 30

def visit_and_node(node)
  node.copy(left: visit(node.left), right: visit(node.right))
end

#visit_arguments_node(node)

Copy a ArgumentsNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 35

def visit_arguments_node(node)
  node.copy(arguments: visit_all(node.arguments))
end

#visit_array_node(node)

Copy a ArrayNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 40

def visit_array_node(node)
  node.copy(elements: visit_all(node.elements))
end

#visit_array_pattern_node(node)

Copy a ArrayPatternNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 45

def visit_array_pattern_node(node)
  node.copy(constant: visit(node.constant), requireds: visit_all(node.requireds), rest: visit(node.rest), posts: visit_all(node.posts))
end

#visit_assoc_node(node)

Copy a AssocNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 50

def visit_assoc_node(node)
  node.copy(key: visit(node.key), value: visit(node.value))
end

#visit_assoc_splat_node(node)

Copy a AssocSplatNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 55

def visit_assoc_splat_node(node)
  node.copy(value: visit(node.value))
end

#visit_back_reference_read_node(node)

Copy a BackReferenceReadNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 60

def visit_back_reference_read_node(node)
  node.copy
end

#visit_begin_node(node)

Copy a BeginNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 65

def visit_begin_node(node)
  node.copy(statements: visit(node.statements), rescue_clause: visit(node.rescue_clause), else_clause: visit(node.else_clause), ensure_clause: visit(node.ensure_clause))
end

#visit_block_argument_node(node)

Copy a BlockArgumentNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 70

def visit_block_argument_node(node)
  node.copy(expression: visit(node.expression))
end

#visit_block_local_variable_node(node)

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 75

def visit_block_local_variable_node(node)
  node.copy
end

#visit_block_node(node)

Copy a BlockNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 80

def visit_block_node(node)
  node.copy(parameters: visit(node.parameters), body: visit(node.body))
end

#visit_block_parameter_node(node)

Copy a BlockParameterNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 85

def visit_block_parameter_node(node)
  node.copy
end

#visit_block_parameters_node(node)

Copy a BlockParametersNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 90

def visit_block_parameters_node(node)
  node.copy(parameters: visit(node.parameters), locals: visit_all(node.locals))
end

#visit_break_node(node)

Copy a BreakNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 95

def visit_break_node(node)
  node.copy(arguments: visit(node.arguments))
end

#visit_call_and_write_node(node)

Copy a CallAndWriteNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 100

def visit_call_and_write_node(node)
  node.copy(receiver: visit(node.receiver), value: visit(node.value))
end

#visit_call_node(node)

Copy a CallNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 105

def visit_call_node(node)
  node.copy(receiver: visit(node.receiver), arguments: visit(node.arguments), block: visit(node.block))
end

#visit_call_operator_write_node(node)

Copy a CallOperatorWriteNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 110

def visit_call_operator_write_node(node)
  node.copy(receiver: visit(node.receiver), value: visit(node.value))
end

#visit_call_or_write_node(node)

Copy a CallOrWriteNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 115

def visit_call_or_write_node(node)
  node.copy(receiver: visit(node.receiver), value: visit(node.value))
end

#visit_call_target_node(node)

Copy a CallTargetNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 120

def visit_call_target_node(node)
  node.copy(receiver: visit(node.receiver))
end

#visit_capture_pattern_node(node)

Copy a CapturePatternNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 125

def visit_capture_pattern_node(node)
  node.copy(value: visit(node.value), target: visit(node.target))
end

#visit_case_match_node(node)

Copy a CaseMatchNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 130

def visit_case_match_node(node)
  node.copy(predicate: visit(node.predicate), conditions: visit_all(node.conditions), consequent: visit(node.consequent))
end

#visit_case_node(node)

Copy a CaseNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 135

def visit_case_node(node)
  node.copy(predicate: visit(node.predicate), conditions: visit_all(node.conditions), consequent: visit(node.consequent))
end

#visit_class_node(node)

Copy a ClassNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 140

def visit_class_node(node)
  node.copy(constant_path: visit(node.constant_path), superclass: visit(node.superclass), body: visit(node.body))
end

#visit_class_variable_and_write_node(node)

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 145

def visit_class_variable_and_write_node(node)
  node.copy(value: visit(node.value))
end

#visit_class_variable_operator_write_node(node)

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 150

def visit_class_variable_operator_write_node(node)
  node.copy(value: visit(node.value))
end

#visit_class_variable_or_write_node(node)

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 155

def visit_class_variable_or_write_node(node)
  node.copy(value: visit(node.value))
end

#visit_class_variable_read_node(node)

Copy a ClassVariableReadNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 160

def visit_class_variable_read_node(node)
  node.copy
end

#visit_class_variable_target_node(node)

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 165

def visit_class_variable_target_node(node)
  node.copy
end

#visit_class_variable_write_node(node)

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 170

def visit_class_variable_write_node(node)
  node.copy(value: visit(node.value))
end

#visit_constant_and_write_node(node)

Copy a ConstantAndWriteNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 175

def visit_constant_and_write_node(node)
  node.copy(value: visit(node.value))
end

#visit_constant_operator_write_node(node)

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 180

def visit_constant_operator_write_node(node)
  node.copy(value: visit(node.value))
end

#visit_constant_or_write_node(node)

Copy a ConstantOrWriteNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 185

def visit_constant_or_write_node(node)
  node.copy(value: visit(node.value))
end

#visit_constant_path_and_write_node(node)

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 190

def visit_constant_path_and_write_node(node)
  node.copy(target: visit(node.target), value: visit(node.value))
end

#visit_constant_path_node(node)

Copy a ConstantPathNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 195

def visit_constant_path_node(node)
  node.copy(parent: visit(node.parent))
end

#visit_constant_path_operator_write_node(node)

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 200

def visit_constant_path_operator_write_node(node)
  node.copy(target: visit(node.target), value: visit(node.value))
end

#visit_constant_path_or_write_node(node)

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 205

def visit_constant_path_or_write_node(node)
  node.copy(target: visit(node.target), value: visit(node.value))
end

#visit_constant_path_target_node(node)

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 210

def visit_constant_path_target_node(node)
  node.copy(parent: visit(node.parent))
end

#visit_constant_path_write_node(node)

Copy a ConstantPathWriteNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 215

def visit_constant_path_write_node(node)
  node.copy(target: visit(node.target), value: visit(node.value))
end

#visit_constant_read_node(node)

Copy a ConstantReadNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 220

def visit_constant_read_node(node)
  node.copy
end

#visit_constant_target_node(node)

Copy a ConstantTargetNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 225

def visit_constant_target_node(node)
  node.copy
end

#visit_constant_write_node(node)

Copy a ConstantWriteNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 230

def visit_constant_write_node(node)
  node.copy(value: visit(node.value))
end

#visit_def_node(node)

Copy a DefNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 235

def visit_def_node(node)
  node.copy(receiver: visit(node.receiver), parameters: visit(node.parameters), body: visit(node.body))
end

#visit_defined_node(node)

Copy a DefinedNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 240

def visit_defined_node(node)
  node.copy(value: visit(node.value))
end

#visit_else_node(node)

Copy a ElseNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 245

def visit_else_node(node)
  node.copy(statements: visit(node.statements))
end

#visit_embedded_statements_node(node)

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 250

def visit_embedded_statements_node(node)
  node.copy(statements: visit(node.statements))
end

#visit_embedded_variable_node(node)

Copy a EmbeddedVariableNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 255

def visit_embedded_variable_node(node)
  node.copy(variable: visit(node.variable))
end

#visit_ensure_node(node)

Copy a EnsureNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 260

def visit_ensure_node(node)
  node.copy(statements: visit(node.statements))
end

#visit_false_node(node)

Copy a FalseNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 265

def visit_false_node(node)
  node.copy
end

#visit_find_pattern_node(node)

Copy a FindPatternNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 270

def visit_find_pattern_node(node)
  node.copy(constant: visit(node.constant), left: visit(node.left), requireds: visit_all(node.requireds), right: visit(node.right))
end

#visit_flip_flop_node(node)

Copy a FlipFlopNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 275

def visit_flip_flop_node(node)
  node.copy(left: visit(node.left), right: visit(node.right))
end

#visit_float_node(node)

Copy a FloatNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 280

def visit_float_node(node)
  node.copy
end

#visit_for_node(node)

Copy a ForNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 285

def visit_for_node(node)
  node.copy(index: visit(node.index), collection: visit(node.collection), statements: visit(node.statements))
end

#visit_forwarding_arguments_node(node)

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 290

def visit_forwarding_arguments_node(node)
  node.copy
end

#visit_forwarding_parameter_node(node)

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 295

def visit_forwarding_parameter_node(node)
  node.copy
end

#visit_forwarding_super_node(node)

Copy a ForwardingSuperNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 300

def visit_forwarding_super_node(node)
  node.copy(block: visit(node.block))
end

#visit_global_variable_and_write_node(node)

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 305

def visit_global_variable_and_write_node(node)
  node.copy(value: visit(node.value))
end

#visit_global_variable_operator_write_node(node)

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 310

def visit_global_variable_operator_write_node(node)
  node.copy(value: visit(node.value))
end

#visit_global_variable_or_write_node(node)

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 315

def visit_global_variable_or_write_node(node)
  node.copy(value: visit(node.value))
end

#visit_global_variable_read_node(node)

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 320

def visit_global_variable_read_node(node)
  node.copy
end

#visit_global_variable_target_node(node)

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 325

def visit_global_variable_target_node(node)
  node.copy
end

#visit_global_variable_write_node(node)

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 330

def visit_global_variable_write_node(node)
  node.copy(value: visit(node.value))
end

#visit_hash_node(node)

Copy a HashNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 335

def visit_hash_node(node)
  node.copy(elements: visit_all(node.elements))
end

#visit_hash_pattern_node(node)

Copy a HashPatternNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 340

def visit_hash_pattern_node(node)
  node.copy(constant: visit(node.constant), elements: visit_all(node.elements), rest: visit(node.rest))
end

#visit_if_node(node)

Copy a IfNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 345

def visit_if_node(node)
  node.copy(predicate: visit(node.predicate), statements: visit(node.statements), consequent: visit(node.consequent))
end

#visit_imaginary_node(node)

Copy a ImaginaryNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 350

def visit_imaginary_node(node)
  node.copy(numeric: visit(node.numeric))
end

#visit_implicit_node(node)

Copy a ImplicitNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 355

def visit_implicit_node(node)
  node.copy(value: visit(node.value))
end

#visit_implicit_rest_node(node)

Copy a ImplicitRestNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 360

def visit_implicit_rest_node(node)
  node.copy
end

#visit_in_node(node)

Copy a InNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 365

def visit_in_node(node)
  node.copy(pattern: visit(node.pattern), statements: visit(node.statements))
end

#visit_index_and_write_node(node)

Copy a IndexAndWriteNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 370

def visit_index_and_write_node(node)
  node.copy(receiver: visit(node.receiver), arguments: visit(node.arguments), block: visit(node.block), value: visit(node.value))
end

#visit_index_operator_write_node(node)

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 375

def visit_index_operator_write_node(node)
  node.copy(receiver: visit(node.receiver), arguments: visit(node.arguments), block: visit(node.block), value: visit(node.value))
end

#visit_index_or_write_node(node)

Copy a IndexOrWriteNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 380

def visit_index_or_write_node(node)
  node.copy(receiver: visit(node.receiver), arguments: visit(node.arguments), block: visit(node.block), value: visit(node.value))
end

#visit_index_target_node(node)

Copy a IndexTargetNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 385

def visit_index_target_node(node)
  node.copy(receiver: visit(node.receiver), arguments: visit(node.arguments), block: visit(node.block))
end

#visit_instance_variable_and_write_node(node)

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 390

def visit_instance_variable_and_write_node(node)
  node.copy(value: visit(node.value))
end

#visit_instance_variable_operator_write_node(node)

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 395

def visit_instance_variable_operator_write_node(node)
  node.copy(value: visit(node.value))
end

#visit_instance_variable_or_write_node(node)

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 400

def visit_instance_variable_or_write_node(node)
  node.copy(value: visit(node.value))
end

#visit_instance_variable_read_node(node)

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 405

def visit_instance_variable_read_node(node)
  node.copy
end

#visit_instance_variable_target_node(node)

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 410

def visit_instance_variable_target_node(node)
  node.copy
end

#visit_instance_variable_write_node(node)

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 415

def visit_instance_variable_write_node(node)
  node.copy(value: visit(node.value))
end

#visit_integer_node(node)

Copy a IntegerNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 420

def visit_integer_node(node)
  node.copy
end

#visit_interpolated_match_last_line_node(node)

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 425

def visit_interpolated_match_last_line_node(node)
  node.copy(parts: visit_all(node.parts))
end

#visit_interpolated_regular_expression_node(node)

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 430

def visit_interpolated_regular_expression_node(node)
  node.copy(parts: visit_all(node.parts))
end

#visit_interpolated_string_node(node)

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 435

def visit_interpolated_string_node(node)
  node.copy(parts: visit_all(node.parts))
end

#visit_interpolated_symbol_node(node)

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 440

def visit_interpolated_symbol_node(node)
  node.copy(parts: visit_all(node.parts))
end

#visit_interpolated_x_string_node(node)

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 445

def visit_interpolated_x_string_node(node)
  node.copy(parts: visit_all(node.parts))
end

#visit_it_local_variable_read_node(node)

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 450

def visit_it_local_variable_read_node(node)
  node.copy
end

#visit_it_parameters_node(node)

Copy a ItParametersNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 455

def visit_it_parameters_node(node)
  node.copy
end

#visit_keyword_hash_node(node)

Copy a KeywordHashNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 460

def visit_keyword_hash_node(node)
  node.copy(elements: visit_all(node.elements))
end

#visit_keyword_rest_parameter_node(node)

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 465

def visit_keyword_rest_parameter_node(node)
  node.copy
end

#visit_lambda_node(node)

Copy a LambdaNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 470

def visit_lambda_node(node)
  node.copy(parameters: visit(node.parameters), body: visit(node.body))
end

#visit_local_variable_and_write_node(node)

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 475

def visit_local_variable_and_write_node(node)
  node.copy(value: visit(node.value))
end

#visit_local_variable_operator_write_node(node)

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 480

def visit_local_variable_operator_write_node(node)
  node.copy(value: visit(node.value))
end

#visit_local_variable_or_write_node(node)

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 485

def visit_local_variable_or_write_node(node)
  node.copy(value: visit(node.value))
end

#visit_local_variable_read_node(node)

Copy a LocalVariableReadNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 490

def visit_local_variable_read_node(node)
  node.copy
end

#visit_local_variable_target_node(node)

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 495

def visit_local_variable_target_node(node)
  node.copy
end

#visit_local_variable_write_node(node)

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 500

def visit_local_variable_write_node(node)
  node.copy(value: visit(node.value))
end

#visit_match_last_line_node(node)

Copy a MatchLastLineNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 505

def visit_match_last_line_node(node)
  node.copy
end

#visit_match_predicate_node(node)

Copy a MatchPredicateNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 510

def visit_match_predicate_node(node)
  node.copy(value: visit(node.value), pattern: visit(node.pattern))
end

#visit_match_required_node(node)

Copy a MatchRequiredNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 515

def visit_match_required_node(node)
  node.copy(value: visit(node.value), pattern: visit(node.pattern))
end

#visit_match_write_node(node)

Copy a MatchWriteNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 520

def visit_match_write_node(node)
  node.copy(call: visit(node.call), targets: visit_all(node.targets))
end

#visit_missing_node(node)

Copy a MissingNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 525

def visit_missing_node(node)
  node.copy
end

#visit_module_node(node)

Copy a ModuleNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 530

def visit_module_node(node)
  node.copy(constant_path: visit(node.constant_path), body: visit(node.body))
end

#visit_multi_target_node(node)

Copy a MultiTargetNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 535

def visit_multi_target_node(node)
  node.copy(lefts: visit_all(node.lefts), rest: visit(node.rest), rights: visit_all(node.rights))
end

#visit_multi_write_node(node)

Copy a MultiWriteNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 540

def visit_multi_write_node(node)
  node.copy(lefts: visit_all(node.lefts), rest: visit(node.rest), rights: visit_all(node.rights), value: visit(node.value))
end

#visit_next_node(node)

Copy a NextNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 545

def visit_next_node(node)
  node.copy(arguments: visit(node.arguments))
end

#visit_nil_node(node)

Copy a NilNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 550

def visit_nil_node(node)
  node.copy
end

#visit_no_keywords_parameter_node(node)

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 555

def visit_no_keywords_parameter_node(node)
  node.copy
end

#visit_numbered_parameters_node(node)

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 560

def visit_numbered_parameters_node(node)
  node.copy
end

#visit_numbered_reference_read_node(node)

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 565

def visit_numbered_reference_read_node(node)
  node.copy
end

#visit_optional_keyword_parameter_node(node)

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 570

def visit_optional_keyword_parameter_node(node)
  node.copy(value: visit(node.value))
end

#visit_optional_parameter_node(node)

Copy a OptionalParameterNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 575

def visit_optional_parameter_node(node)
  node.copy(value: visit(node.value))
end

#visit_or_node(node)

Copy a OrNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 580

def visit_or_node(node)
  node.copy(left: visit(node.left), right: visit(node.right))
end

#visit_parameters_node(node)

Copy a ParametersNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 585

def visit_parameters_node(node)
  node.copy(requireds: visit_all(node.requireds), optionals: visit_all(node.optionals), rest: visit(node.rest), posts: visit_all(node.posts), keywords: visit_all(node.keywords), keyword_rest: visit(node.keyword_rest), block: visit(node.block))
end

#visit_parentheses_node(node)

Copy a ParenthesesNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 590

def visit_parentheses_node(node)
  node.copy(body: visit(node.body))
end

#visit_pinned_expression_node(node)

Copy a PinnedExpressionNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 595

def visit_pinned_expression_node(node)
  node.copy(expression: visit(node.expression))
end

#visit_pinned_variable_node(node)

Copy a PinnedVariableNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 600

def visit_pinned_variable_node(node)
  node.copy(variable: visit(node.variable))
end

#visit_post_execution_node(node)

Copy a PostExecutionNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 605

def visit_post_execution_node(node)
  node.copy(statements: visit(node.statements))
end

#visit_pre_execution_node(node)

Copy a PreExecutionNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 610

def visit_pre_execution_node(node)
  node.copy(statements: visit(node.statements))
end

#visit_program_node(node)

Copy a ProgramNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 615

def visit_program_node(node)
  node.copy(statements: visit(node.statements))
end

#visit_range_node(node)

Copy a RangeNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 620

def visit_range_node(node)
  node.copy(left: visit(node.left), right: visit(node.right))
end

#visit_rational_node(node)

Copy a RationalNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 625

def visit_rational_node(node)
  node.copy
end

#visit_redo_node(node)

Copy a RedoNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 630

def visit_redo_node(node)
  node.copy
end

#visit_regular_expression_node(node)

Copy a RegularExpressionNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 635

def visit_regular_expression_node(node)
  node.copy
end

#visit_required_keyword_parameter_node(node)

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 640

def visit_required_keyword_parameter_node(node)
  node.copy
end

#visit_required_parameter_node(node)

Copy a RequiredParameterNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 645

def visit_required_parameter_node(node)
  node.copy
end

#visit_rescue_modifier_node(node)

Copy a RescueModifierNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 650

def visit_rescue_modifier_node(node)
  node.copy(expression: visit(node.expression), rescue_expression: visit(node.rescue_expression))
end

#visit_rescue_node(node)

Copy a RescueNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 655

def visit_rescue_node(node)
  node.copy(exceptions: visit_all(node.exceptions), reference: visit(node.reference), statements: visit(node.statements), consequent: visit(node.consequent))
end

#visit_rest_parameter_node(node)

Copy a RestParameterNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 660

def visit_rest_parameter_node(node)
  node.copy
end

#visit_retry_node(node)

Copy a RetryNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 665

def visit_retry_node(node)
  node.copy
end

#visit_return_node(node)

Copy a ReturnNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 670

def visit_return_node(node)
  node.copy(arguments: visit(node.arguments))
end

#visit_self_node(node)

Copy a SelfNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 675

def visit_self_node(node)
  node.copy
end

#visit_shareable_constant_node(node)

Copy a ShareableConstantNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 680

def visit_shareable_constant_node(node)
  node.copy(write: visit(node.write))
end

#visit_singleton_class_node(node)

Copy a SingletonClassNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 685

def visit_singleton_class_node(node)
  node.copy(expression: visit(node.expression), body: visit(node.body))
end

#visit_source_encoding_node(node)

Copy a SourceEncodingNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 690

def visit_source_encoding_node(node)
  node.copy
end

#visit_source_file_node(node)

Copy a SourceFileNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 695

def visit_source_file_node(node)
  node.copy
end

#visit_source_line_node(node)

Copy a SourceLineNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 700

def visit_source_line_node(node)
  node.copy
end

#visit_splat_node(node)

Copy a SplatNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 705

def visit_splat_node(node)
  node.copy(expression: visit(node.expression))
end

#visit_statements_node(node)

Copy a StatementsNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 710

def visit_statements_node(node)
  node.copy(body: visit_all(node.body))
end

#visit_string_node(node)

Copy a StringNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 715

def visit_string_node(node)
  node.copy
end

#visit_super_node(node)

Copy a SuperNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 720

def visit_super_node(node)
  node.copy(arguments: visit(node.arguments), block: visit(node.block))
end

#visit_symbol_node(node)

Copy a SymbolNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 725

def visit_symbol_node(node)
  node.copy
end

#visit_true_node(node)

Copy a TrueNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 730

def visit_true_node(node)
  node.copy
end

#visit_undef_node(node)

Copy a UndefNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 735

def visit_undef_node(node)
  node.copy(names: visit_all(node.names))
end

#visit_unless_node(node)

Copy a UnlessNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 740

def visit_unless_node(node)
  node.copy(predicate: visit(node.predicate), statements: visit(node.statements), consequent: visit(node.consequent))
end

#visit_until_node(node)

Copy a UntilNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 745

def visit_until_node(node)
  node.copy(predicate: visit(node.predicate), statements: visit(node.statements))
end

#visit_when_node(node)

Copy a WhenNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 750

def visit_when_node(node)
  node.copy(conditions: visit_all(node.conditions), statements: visit(node.statements))
end

#visit_while_node(node)

Copy a WhileNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 755

def visit_while_node(node)
  node.copy(predicate: visit(node.predicate), statements: visit(node.statements))
end

#visit_x_string_node(node)

Copy a XStringNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 760

def visit_x_string_node(node)
  node.copy
end

#visit_yield_node(node)

Copy a YieldNode node

[ GitHub ]

  
# File 'lib/prism/mutation_compiler.rb', line 765

def visit_yield_node(node)
  node.copy(arguments: visit(node.arguments))
end