struct RegExpObject: Object {
RefPtr<RegExp> value;
PropertyDescriptor *lastIndexProperty;
- const bool global;
+ bool global;
RegExpObject(ExecutionEngine *engine, PassRefPtr<RegExp> value, bool global);
virtual QString className() { return QStringLiteral("RegExp"); }
virtual RegExpObject *asRegExpObject() { return this; }
defineDefaultProperty(ctx, QStringLiteral("exec"), method_exec, 1);
defineDefaultProperty(ctx, QStringLiteral("test"), method_test, 1);
defineDefaultProperty(ctx, QStringLiteral("toString"), method_toString, 0);
+ defineDefaultProperty(ctx, QStringLiteral("compile"), method_compile, 2);
}
Value RegExpPrototype::method_exec(ExecutionContext *ctx)
return Value::fromString(ctx, result);
}
+Value RegExpPrototype::method_compile(ExecutionContext *ctx)
+{
+ RegExpObject *r = ctx->thisObject.asRegExpObject();
+ if (!r)
+ ctx->throwTypeError();
+
+ RegExpObject *re = ctx->engine->regExpCtor.asFunctionObject()->construct(ctx, ctx->arguments, ctx->argumentCount).asRegExpObject();
+
+ r->value = re->value;
+ r->global = re->global;
+ return Value::undefinedValue();
+}
+
//
// ErrorCtr
//
static Value method_exec(ExecutionContext *ctx);
static Value method_test(ExecutionContext *ctx);
static Value method_toString(ExecutionContext *ctx);
+ static Value method_compile(ExecutionContext *ctx);
};
struct ErrorCtor: FunctionObject