Class: Semdiff::StructuresCompiler
- Inherits:
-
Prism::MutationCompiler
- Object
- Prism::MutationCompiler
- Semdiff::StructuresCompiler
- Includes:
- Prism::DSL, CompilerUtils
- Defined in:
- lib/semdiff/structures_compiler.rb
Overview
StructuresCompiler is a compiler that normalizes common data structure operations.
Instance Method Summary collapse
Methods included from CompilerUtils
Instance Method Details
#visit_call_node(node) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/semdiff/structures_compiler.rb', line 23 def visit_call_node(node) receiver = visit(node.receiver) arguments = visit(node.arguments) block = visit(node.block) result = case node.name when :new transform_constructor(node, receiver, arguments, block) when :[] transform_class_bracket_method(node, receiver, arguments) when :push transform_push_to_shovel(node, receiver, arguments) when :concat transform_concat_to_shovel(node, receiver, arguments) when :store transform_store_to_bracket_assign(node, receiver, arguments) end if result CompilerUtils.inherit_newline(node, result) else node.copy(receiver: receiver, arguments: arguments, block: block) end end |