mirror of
https://github.com/vercel-labs/scriptc.git
synced 2026-10-19 05:29:46 +08:00
- Add shared ArrayBuffer storage and native Unicode grapheme segmentation. - Preserve builtin modules, globals, and byte views across JavaScript bindings. - Compile package initialization expressions and optional native callables.
33 lines
1.4 KiB
JavaScript
33 lines
1.4 KiB
JavaScript
let values;
|
|
((entry) => {
|
|
entry[entry["Left"] = 0] = "Left";
|
|
entry[entry["Right"] = 1] = "Right";
|
|
})(values ||= {});
|
|
console.log(values.Left, values[0], values.Right, values[1]);
|
|
let order = "";
|
|
let object = {};
|
|
const original = object;
|
|
function receiver() { order += "r"; return object; }
|
|
function key() { order += "k"; return "answer"; }
|
|
function value() { order += "v"; object = {}; return 42; }
|
|
console.log(receiver()[key()] = value(), order, original.answer, object.answer);
|
|
const token = { toString() { order += "c"; return "key"; } };
|
|
order = "";
|
|
console.log(original[token] = value(), order);
|
|
console.log(original["missing"] = undefined, "missing" in original);
|
|
const setter = {};
|
|
Object.defineProperty(setter, "x", { set(v) { order += v; }, get() { throw new Error("must not read"); } });
|
|
order = "";
|
|
console.log(setter["x"] = 7, order);
|
|
let bad = null;
|
|
order = "";
|
|
try { bad[key()] = value(); } catch (error) { console.log(error.name, order); }
|
|
order = "";
|
|
try { console.log(bad[token] = value()); } catch (error) { console.log(error.name, error.message, order); }
|
|
order = "";
|
|
const failingKey = { toString() { order += "c"; throw new Error("key"); } };
|
|
try { console.log(original[failingKey] = value()); } catch (error) { console.log(error.message, order); }
|
|
order = "";
|
|
function failValue() { order += "v"; throw new Error("value"); }
|
|
try { console.log(original[token] = failValue()); } catch (error) { console.log(error.message, order); }
|