mirror of https://github.com/tc39/test262.git
Add test for throwing WrappedFunctionCreate
This commit is contained in:
parent
81895b1543
commit
f71d5e29cb
|
@ -0,0 +1,40 @@
|
|||
// Copyright (C) 2022 Chengzhong Wu. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
/*---
|
||||
esid: sec-wrapped-function-exotic-objects-call-thisargument-argumentslist
|
||||
description: >
|
||||
WrappedFunctionCreate throws a TypeError the target is a revoked proxy.
|
||||
|
||||
info: |
|
||||
WrappedFunctionCreate ( callerRealm: a Realm Record, Target: a function object, )
|
||||
1. Let target be F.[[WrappedTargetFunction]].
|
||||
2. Assert: IsCallable(target) is true.
|
||||
3. Let callerRealm be F.[[Realm]].
|
||||
4. NOTE: Any exception objects produced after this point are associated with callerRealm.
|
||||
5. Let targetRealm be ? GetFunctionRealm(target).
|
||||
...
|
||||
|
||||
GetFunctionRealm ( obj )
|
||||
...
|
||||
3. If obj is a Proxy exotic object, then
|
||||
a. If obj.[[ProxyHandler]] is null, throw a TypeError exception.
|
||||
...
|
||||
|
||||
features: [ShadowRealm]
|
||||
---*/
|
||||
|
||||
assert.sameValue(
|
||||
typeof ShadowRealm.prototype.evaluate,
|
||||
'function',
|
||||
'This test must fail if ShadowRealm.prototype.evaluate is not a function'
|
||||
);
|
||||
|
||||
const r = new ShadowRealm();
|
||||
|
||||
const fn = r.evaluate(`
|
||||
globalThis.revocable = Proxy.revocable(() => {}, {});
|
||||
|
||||
globalThis.revocable.proxy;
|
||||
`);
|
||||
r.evaluate('revocable.revoke()');
|
||||
assert.throws(TypeError, () => fn());
|
70
test/built-ins/ShadowRealm/prototype/evaluate/throws-typeerror-wrap-throwing.js
vendored
Normal file
70
test/built-ins/ShadowRealm/prototype/evaluate/throws-typeerror-wrap-throwing.js
vendored
Normal file
|
@ -0,0 +1,70 @@
|
|||
// Copyright (C) 2022 Chengzhong Wu. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
/*---
|
||||
esid: sec-wrappedfunctioncreate
|
||||
description: >
|
||||
WrappedFunctionCreate throws a TypeError if the accessing target's property may throw.
|
||||
|
||||
info: |
|
||||
WrappedFunctionCreate ( callerRealm: a Realm Record, Target: a function object, )
|
||||
...
|
||||
7. Let result be CopyNameAndLength(wrapped, Target).
|
||||
...
|
||||
|
||||
CopyNameAndLength ( F: a function object, Target: a function object, optional prefix: a String, optional argCount: a Number, )
|
||||
...
|
||||
3. Let targetHasLength be ? HasOwnProperty(Target, "length").
|
||||
4. If targetHasLength is true, then
|
||||
a. Let targetLen be ? Get(Target, "length").
|
||||
...
|
||||
6. Let targetName be ? Get(Target, "name").
|
||||
|
||||
features: [ShadowRealm]
|
||||
---*/
|
||||
|
||||
assert.sameValue(
|
||||
typeof ShadowRealm.prototype.evaluate,
|
||||
'function',
|
||||
'This test must fail if ShadowRealm.prototype.evaluate is not a function'
|
||||
);
|
||||
|
||||
const r = new ShadowRealm();
|
||||
|
||||
assert.throws(TypeError, () => r.evaluate(`
|
||||
const revocable = Proxy.revocable(() => {}, {});
|
||||
revocable.revoke();
|
||||
|
||||
revocable.proxy;
|
||||
`), 'TypeError on wrapping a revoked callable proxy');
|
||||
|
||||
assert.throws(TypeError, () => r.evaluate(`
|
||||
const fn = () => {};
|
||||
Object.defineProperty(fn, 'name', {
|
||||
get() {
|
||||
throw new Error();
|
||||
},
|
||||
});
|
||||
|
||||
fn;
|
||||
`), 'TypeError on wrapping a fn with throwing name accessor');
|
||||
|
||||
assert.throws(TypeError, () => r.evaluate(`
|
||||
const fn = () => {};
|
||||
Object.defineProperty(fn, 'length', {
|
||||
get() {
|
||||
throw new Error();
|
||||
},
|
||||
});
|
||||
|
||||
fn;
|
||||
`), 'TypeError on wrapping a fn with throwing length accessor');
|
||||
|
||||
assert.throws(TypeError, () => r.evaluate(`
|
||||
const proxy = new Proxy(() => {}, {
|
||||
getOwnPropertyDescriptor(target, key) {
|
||||
throw new Error();
|
||||
},
|
||||
});
|
||||
|
||||
proxy;
|
||||
`), 'TypeError on wrapping a callable proxy with throwing getOwnPropertyDescriptor trap');
|
Loading…
Reference in New Issue