@Override
public ReflexValue evaluate(IReflexDebugger debugger, Scope scope) {
debugger.stepStart(this, scope);
if (handler.getApi() == null) {
throw new ReflexException(lineNumber, "There is no api handler registered");
}
List<ReflexValue> callParams = new ArrayList<ReflexValue>(params.size());
for (int i = 0; i < params.size(); i++) {
ReflexValue v = params.get(i).evaluate(debugger, scope);
callParams.add(v);
}
debugger.recordMessage(String.format("Calling %s.%s", areaName, fnName));
ReflexValue retVal = new ReflexNullValue(lineNumber);
;
if (sdkName == null) {
retVal = KernelExecutor.executeFunction(lineNumber, handler.getApi(), areaName, fnName, callParams);
} else {
InstallableKernelScript sdkKernel = handler.getApi().getInstalledKernel(sdkName).getKernelScript();
if (sdkKernel == null) {
throw new ReflexException(lineNumber, "NO installed kernel named " + sdkName + " found");
} else {
retVal = KernelExecutor.executeFunction(lineNumber, sdkKernel, areaName, fnName, callParams);
}
}
debugger.stepEnd(this, retVal, scope);
return retVal;
}