import { assert, assertThrows } from "./assert.js";
assertThrows(ReferenceError, () => {
Object.create([], { x: { get get() { unresolvable; } } });
});
assertThrows(ReferenceError, () => {
Object.create([], { x: { get set() { unresolvable; } } });
});
for (const key of ["get", "set"]) {
const sentinel = new Error("thrown from the " + key + " accessor");
const desc = { get [key]() { throw sentinel; } };
let caught;
try {
Object.defineProperty({}, "p", desc);
} catch (e) {
caught = e;
}
assert(caught, sentinel, "abrupt completion of Get(Obj, \"" + key + "\")");
}
assertThrows(TypeError, () => Object.defineProperty({}, "p", { get: 1 }));
assertThrows(TypeError, () => Object.defineProperty({}, "p", { set: 1 }));
const o = {};
Object.defineProperty(o, "p", { get get() { return () => 42; } });
assert(o.p, 42);