Files
scriptc/tests/corpus/3070-checked-object-accessors.js
Chris Tate cbb8fc380a Link native FFI libraries and callbacks without a JavaScript engine
- Add exact 64-bit and pointer ABIs, static node:ffi bindings, and Darwin framework linking.
- Support native memory views and reusable callback pools with checked conversions and lifetime handling.
- Preserve the JavaScript values, accessors, and module bindings used during renderer initialization.
2026-09-29 08:07:03 -05:00

27 lines
958 B
JavaScript

function make(raw) {
let pointer = raw.pointer;
const object = {
get pointer() { return pointer; },
set pointer(value) { pointer = value; },
get alive() { return pointer !== null; },
close() { pointer = null; },
};
return object;
}
const value = make(JSON.parse('{"pointer":42}'));
console.log(value.pointer, value.alive, Object.keys(value).join(','));
value.pointer = 99;
console.log(value.pointer);
value.close();
console.log(value.pointer, value.alive);
let calls = 0;
const key = JSON.parse('"x"');
const mixed = {get [key]() {calls++; return 7;}, [key]: 8};
console.log(mixed.x,calls);
const spread = {get x() {return 0;}, set x(value) {calls++;}, ...JSON.parse('{"x":10}')};
console.log(spread.x, calls, Object.getOwnPropertyDescriptor(spread, "x").writable);
spread.x = 11;
console.log(spread.x, calls);
const getterSpread = {get [key]() {throw new Error("replaced");}, ...JSON.parse('{"x":12}')};
console.log(getterSpread.x);