return object;
}
+Object *ExecutionEngine::newReferenceErrorObject(ExecutionContext *ctx, const QString &message)
+{
+ ReferenceErrorObject *object = new ReferenceErrorObject(ctx, message);
+ object->prototype = referenceErrorPrototype;
+ return object;
+}
+
+Object *ExecutionEngine::newTypeErrorObject(ExecutionContext *ctx, const QString &message)
+{
+ TypeErrorObject *object = new TypeErrorObject(ctx, message);
+ object->prototype = typeErrorPrototype;
+ return object;
+}
+
Object *ExecutionEngine::newMathObject(ExecutionContext *ctx)
{
MathObject *object = new MathObject(ctx);
Object *newErrorObject(const Value &value);
Object *newSyntaxErrorObject(ExecutionContext *ctx, DiagnosticMessage *message);
+ Object *newReferenceErrorObject(ExecutionContext *ctx, const QString &message);
+ Object *newTypeErrorObject(ExecutionContext *ctx, const QString &message);
+
Object *newMathObject(ExecutionContext *ctx);
Object *newActivationObject(ExecutionContext *ctx);
void ExecutionContext::throwTypeError()
{
- Value v = Value::fromString(this, QStringLiteral("Type error"));
- throwError(Value::fromObject(engine->newErrorObject(v)));
+ throwError(Value::fromObject(engine->newTypeErrorObject(this, QStringLiteral("Type error"))));
}
void ExecutionContext::throwUnimplemented(const QString &message)
{
String *s = value.toString(this);
QString msg = s->toQString() + QStringLiteral(" is not defined");
- throwError(Value::fromObject(engine->newErrorObject(Value::fromString(this, msg))));
+ throwError(Value::fromObject(engine->newReferenceErrorObject(this, msg)));
}
void ExecutionContext::initCallContext(ExecutionContext *parent, const Value that, FunctionObject *f, Value *args, unsigned argc)
struct ReferenceErrorObject: ErrorObject {
ReferenceErrorObject(ExecutionContext *ctx)
: ErrorObject(ctx->argument(0)) { setNameProperty(ctx); }
+ ReferenceErrorObject(ExecutionContext *ctx, const QString &msg)
+ : ErrorObject(Value::fromString(ctx,msg)) { setNameProperty(ctx); }
virtual QString className() { return QStringLiteral("ReferenceError"); }
};
struct TypeErrorObject: ErrorObject {
TypeErrorObject(ExecutionContext *ctx)
: ErrorObject(ctx->argument(0)) { setNameProperty(ctx); }
+ TypeErrorObject(ExecutionContext *ctx, const QString &msg)
+ : ErrorObject(Value::fromString(ctx,msg)) { setNameProperty(ctx); }
virtual QString className() { return QStringLiteral("TypeError"); }
};