class Rsense::Server::Command::AliasNativeMethod

Attributes

context[RW]

Public Class Methods

new() click to toggle source
Calls superclass method
# File lib/rsense/server/command/alias_native_method.rb, line 12
def initialize
  super
end

Public Instance Methods

call(runtime, receivers, args, blcck, result) click to toggle source
# File lib/rsense/server/command/alias_native_method.rb, line 16
def call(runtime, receivers, args, blcck, result)
  callNextMethod = true
  if args
    receivers.each do |receiver|
      callNextMethod = false
      new_name = Java::org.cx4a.rsense.typing.vertex::Vertex.getStringOrSymbol(args[0])
      if args.size > 1
        old_name = Java::org.cx4a.rsense.typing.vertex::Vertex.getStringOrSymbol(args[1])
      end
      rsense_module = receiver
      visibility = Java::org.cx4a.rsense.ruby::Visibility::PUBLIC
      if old_name && new_name
        rcbase, rname, rbodyNode, rargsNode, rvisibility, rlocation = Rsense::Server::Command::RsenseMethod.make_method(rsense_module, old_name, visibility, args.first.node.parent)
        rsense_method = Rsense::Server::Command::RsenseMethod.new(rcbase, rname, rbodyNode, rargsNode, rvisibility, rlocation)
        rsense_module.addMethod(old_name, rsense_method)
        rsense_module.addMethod(new_name, Java::org.cx4a.rsense.typing.runtime::AliasMethod.new(new_name, rsense_method))
      else
        rcbase, rname, rbodyNode, rargsNode, rvisibility, rlocation = Rsense::Server::Command::RsenseMethod.make_method(rsense_module, new_name, visibility, args.first.node.closest_module)
        rsense_method = Rsense::Server::Command::RsenseMethod.new(rcbase, rname, rbodyNode, rargsNode, rvisibility, rlocation)
        rsense_module.addMethod(new_name, rsense_method)
      end
    end
  end
  result.setCallNextMethod(callNextMethod)
end