class Opal::RubyParser::AssignNode

def generate(opts, level)

def generate(opts, level)
  if @lhs.is_a? IvarNode
    return "#{SelfNode.new.generate(opts, level)}['#{@lhs.value}'] = #{@rhs.generate(opts, LEVEL_EXPR)}"
  elsif @lhs.is_a? GvarNode
    return "VM.gs('#{@lhs.value}', #{@rhs.generate(opts, LEVEL_EXPR)})"
  elsif @lhs.is_a? IdentifierNode
    opts[:scope].ensure_variable @lhs.value
    return @lhs.value + " = " + @rhs.generate(opts, LEVEL_EXPR)
  elsif @lhs.is_a? ArefNode
    return AsetNode.new(@lhs.recv, @lhs.arefs, @rhs).process(opts, level)
  elsif @lhs.is_a? ConstantNode
    return "rb_vm_cs(self, '#{@lhs.value}', #{@rhs.generate(opts, LEVEL_EXPR)})"
  elsif @lhs.is_a? CallNode
    return CallNode.new(@lhs.recv, { :value => @lhs.mid + '=', :line => @line }, [[@rhs]]).generate(opts, level);
  else
    raise "Bad lhs for assign on #{@line}"
  end
end

def initialize(lhs, rhs, assign = {})

def initialize(lhs, rhs, assign = {})
  @line = lhs.line
  @lhs = lhs
  @rhs = rhs
end