PropertyDescriptor pd = PropertyDescriptor::fromAccessor(get, set);
pd.configurable = PropertyDescriptor::Enabled;
pd.enumberable = PropertyDescriptor::Enabled;
- for (int i = 0; i < context->argumentCount; ++i)
+ for (uint i = 0; i < context->argumentCount; ++i)
__defineOwnProperty__(context, QString::number(i), &pd);
defineDefaultProperty(context, QStringLiteral("callee"), Value::fromObject(context->function));
}
Value ArgumentsObject::__get__(ExecutionContext *ctx, String *name, bool *hasProperty)
{
- bool ok = false;
- currentIndex = name->toQString().toInt(&ok);
- if (!ok)
- currentIndex = -1;
+ if (!ctx->strictMode) {
+ bool ok = false;
+ currentIndex = name->toQString().toInt(&ok);
+ if (!ok)
+ currentIndex = -1;
+ }
Value result = Object::__get__(ctx, name, hasProperty);
currentIndex = -1;
return result;
void ArgumentsObject::__put__(ExecutionContext *ctx, String *name, Value value)
{
- bool ok = false;
- currentIndex = name->toQString().toInt(&ok);
- if (!ok)
- currentIndex = -1;
+ if (!ctx->strictMode) {
+ bool ok = false;
+ currentIndex = name->toQString().toInt(&ok);
+ if (!ok)
+ currentIndex = -1;
+ }
Object::__put__(ctx, name, value);
currentIndex = -1;
}
__qmljs_throw_type_error(ctx);
assert(ctx != args->context);
- assert(args->currentIndex >= 0 && args->currentIndex < args->context->argumentCount);
+ assert(args->currentIndex >= 0 && args->currentIndex < (int)args->context->argumentCount);
return args->context->argument(args->currentIndex);
}
__qmljs_throw_type_error(ctx);
assert(ctx != args->context);
- assert(args->currentIndex >= 0 && args->currentIndex < args->context->argumentCount);
+ assert(args->currentIndex >= 0 && args->currentIndex < (int)args->context->argumentCount);
args->context->arguments[args->currentIndex] = ctx->arguments[0];
+ return Value::undefinedValue();
}
NativeFunction::NativeFunction(ExecutionContext *scope, String *name, Value (*code)(ExecutionContext *))