class Riml::Compiler::AssignNodeVisitor

Public Instance Methods

compile(node) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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