jscript: Throw proper error when calling Set constructor as method.

Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
This commit is contained in:
Gabriel Ivăncescu 2022-11-22 18:53:20 +02:00 committed by Alexandre Julliard
parent 84f7f60192
commit 534b977c62
2 changed files with 10 additions and 0 deletions

View file

@ -572,6 +572,9 @@ static HRESULT Set_constructor(script_ctx_t *ctx, jsval_t vthis, WORD flags, uns
*r = jsval_obj(&set->dispex);
return S_OK;
case DISPATCH_METHOD:
return throw_error(ctx, JS_E_WRONG_THIS, L"Set");
default:
FIXME("unimplemented flags %x\n", flags);
return E_NOTIMPL;

View file

@ -1201,6 +1201,13 @@ sync_test("func_scope", function() {
sync_test("set_obj", function() {
if(!("Set" in window)) return;
try {
var s = Set();
ok(false, "expected exception calling constructor as method");
}catch(e) {
ok(e.number === 0xa13fc - 0x80000000, "calling constructor as method threw " + e.number);
}
var s = new Set, r;
ok(Object.getPrototypeOf(s) === Set.prototype, "unexpected Set prototype");