summaryrefslogtreecommitdiffstats
path: root/js/src/tests/non262/Record/literal.js
blob: f0d9d67e22c51d5f7143fbc0cd15e9631843b945 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
// |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);