Class: Riml::Compiler::AssignNodeVisitor
Instance Method Summary
collapse
Methods inherited from Visitor
#initialize, #visit
Instance Method Details
#compile(node) ⇒ Object
302
303
304
305
306
307
308
309
310
311
312
313
314
315
|
# File 'lib/riml/compiler.rb', line 302
def compile(node)
lhs = visit_lhs(node)
rhs = visit_rhs(node)
if GetVariableNode === node.lhs && node.scope && (func = node.scope.function)
if func.argument_variable_names.include?(node.lhs.full_name)
if !func.shadowed_argument_variable_names.include?(node.lhs.full_name)
func.shadowed_argument_variable_names << node.lhs.full_name
end
end
end
node.compiled_output = "#{lhs}#{rhs}"
node.force_newline = true
node.compiled_output
end
|
#visit_lhs(node) ⇒ Object
317
318
319
320
|
# File 'lib/riml/compiler.rb', line 317
def visit_lhs(node)
node.lhs.accept(visitor_for_node(node.lhs, :propagate_up_tree => false))
"let #{node.lhs.compiled_output} #{node.operator} "
end
|
#visit_rhs(node) ⇒ Object
322
323
324
325
|
# File 'lib/riml/compiler.rb', line 322
def visit_rhs(node)
node.rhs.accept(visitor_for_node(node.rhs, :propagate_up_tree => false))
node.rhs.compiled_output
end
|