12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- load("test-common.js");
- try {
- assert(Object.isExtensible(new Proxy({}, { isExtensible: null })) === true);
- assert(Object.isExtensible(new Proxy({}, { isExtensible: undefined })) === true);
- assert(Object.isExtensible(new Proxy({}, {})) === true);
- let o = {};
- let p = new Proxy(o, {
- isExtensible(target) {
- assert(target === o);
- return true;
- }
- });
- Object.isExtensible(p);
- // Invariants
- o = {};
- p = new Proxy(o, {
- isExtensible(proxyTarget) {
- assert(proxyTarget === o);
- return true;
- },
- });
- assert(Object.isExtensible(p) === true);
- Object.preventExtensions(o);
- assertThrowsError(() => {
- Object.isExtensible(p);
- }, {
- error: TypeError,
- message: "Proxy handler's isExtensible trap violates invariant: return value must match the target's extensibility",
- });
- p = new Proxy(o, {
- isExtensible(proxyTarget) {
- assert(proxyTarget === o);
- return false;
- },
- });
- assert(Object.isExtensible(p) === false);
- console.log("PASS");
- } catch (e) {
- console.log("FAIL: " + e);
- }
|