Source code

Revision control

Copy as Markdown

Other Tools

// |reftest| skip-if(!this.hasOwnProperty("Record"))
let rec = #{ x: 1, "y": 2, 0: 3, 1n: 4, [`key${4}`]: 5 };
assertEq(rec.x, 1);
assertEq(rec.y, 2);
assertEq(rec[0], 3);
assertEq(rec[1], 4);
assertEq(rec.key4, 5);
let dup = #{ x: 1, x: 2 };
assertEq(dup.x, 2);
assertThrowsInstanceOf(
() => #{ [Symbol()]: 1 },
TypeError,
"Symbols cannot be used as record keys"
);
let rec2 = #{ x: 1, ...{ a: 2, z: 3 }, b: 4, ...{ d: 5 } };
assertEq(rec2.x, 1);
assertEq(rec2.a, 2);
assertEq(rec2.z, 3);
assertEq(rec2.b, 4);
assertEq(rec2.d, 5);
assertThrowsInstanceOf(
() => #{ ...{ [Symbol()]: 1 } },
TypeError,
"Symbols cannot be used as record keys"
);
let rec3 = #{
...Object.defineProperty({}, "x", { value: 1 }),
...Object.defineProperty({}, Symbol(), { value: 2 }),
};
assertEq(rec3.x, undefined);
let rec4 = #{ ...{}, ...{}, ...{} };
if (typeof reportCompare === "function") reportCompare(0, 0);