class Opal::Nodes::AliasNode

def compile

def compile
  # We only need to check one type, because parser otherwise denies invalid expressions
  case new_name.type
  when :gvar # This is a gvar alias: alias $a $b
    helper :alias_gvar
    new_name_str = new_name.children.first.to_s[1..-1].inspect
    old_name_str = old_name.children.first.to_s[1..-1].inspect
    push '$alias_gvar(', new_name_str, ', ', old_name_str, ')'
  when :dsym, :sym # This is a method alias: alias a b
    helper :alias
    compiler.record_method_call old_name.children.last if old_name.type == :sym
    push "$alias(#{scope.self}, ", expr(new_name), ', ', expr(old_name), ')'
  else # Nothing else is available, but just in case, drop an error
    error "Opal doesn't know yet how to alias with #{new_name.type}"
  end
end