src/script/api/qscriptvalue.cpp
changeset 19 fcece45ef507
parent 18 2f34d5167611
child 22 79de32ba3296
equal deleted inserted replaced
18:2f34d5167611 19:fcece45ef507
  1944     JSC::JSValue array = d->engine->scriptValueToJSCValue(arguments);
  1944     JSC::JSValue array = d->engine->scriptValueToJSCValue(arguments);
  1945     // copied from runtime/FunctionPrototype.cpp, functionProtoFuncApply()
  1945     // copied from runtime/FunctionPrototype.cpp, functionProtoFuncApply()
  1946     JSC::MarkedArgumentBuffer applyArgs;
  1946     JSC::MarkedArgumentBuffer applyArgs;
  1947     if (!array.isUndefinedOrNull()) {
  1947     if (!array.isUndefinedOrNull()) {
  1948         if (!array.isObject()) {
  1948         if (!array.isObject()) {
  1949             return d->engine->scriptValueFromJSCValue(JSC::throwError(exec, JSC::TypeError));
  1949             return d->engine->scriptValueFromJSCValue(JSC::throwError(exec, JSC::TypeError, "Arguments must be an array"));
  1950         }
  1950         }
  1951         if (JSC::asObject(array)->classInfo() == &JSC::Arguments::info)
  1951         if (JSC::asObject(array)->classInfo() == &JSC::Arguments::info)
  1952             JSC::asArguments(array)->fillArgList(exec, applyArgs);
  1952             JSC::asArguments(array)->fillArgList(exec, applyArgs);
  1953         else if (JSC::isJSArray(&exec->globalData(), array))
  1953         else if (JSC::isJSArray(&exec->globalData(), array))
  1954             JSC::asArray(array)->fillArgList(exec, applyArgs);
  1954             JSC::asArray(array)->fillArgList(exec, applyArgs);
  1955         else if (JSC::asObject(array)->inherits(&JSC::JSArray::info)) {
  1955         else if (JSC::asObject(array)->inherits(&JSC::JSArray::info)) {
  1956             unsigned length = JSC::asArray(array)->get(exec, exec->propertyNames().length).toUInt32(exec);
  1956             unsigned length = JSC::asArray(array)->get(exec, exec->propertyNames().length).toUInt32(exec);
  1957             for (unsigned i = 0; i < length; ++i)
  1957             for (unsigned i = 0; i < length; ++i)
  1958                 applyArgs.append(JSC::asArray(array)->get(exec, i));
  1958                 applyArgs.append(JSC::asArray(array)->get(exec, i));
  1959         } else {
  1959         } else {
  1960             Q_ASSERT_X(false, Q_FUNC_INFO, "implement me");
  1960             return d->engine->scriptValueFromJSCValue(JSC::throwError(exec, JSC::TypeError, "Arguments must be an array"));
  1961 //            return JSC::throwError(exec, JSC::TypeError);
       
  1962         }
  1961         }
  1963     }
  1962     }
  1964 
  1963 
  1965     JSC::JSValue savedException;
  1964     JSC::JSValue savedException;
  1966     QScriptValuePrivate::saveException(exec, &savedException);
  1965     QScriptValuePrivate::saveException(exec, &savedException);