1659595.js (1151B)
1 // Impliclitly converting regular numeric properties to computed numeric 2 // properties in the parser means checking there's no semantic changes. 3 4 let a = { 5 0: 0, 6 1n: 1n, 7 8 get 2() { 9 return 2; 10 }, 11 set 2(o) {}, 12 13 get 3n() { 14 return 3n; 15 }, 16 set 3n(o) {} 17 }; 18 19 assertEq(a[0], 0); 20 assertEq(a[1n], 1n); 21 assertEq(a[2], 2); 22 assertEq(a[3n], 3n); 23 24 function getterName(x) { 25 return Object.getOwnPropertyDescriptor(a, x).get.name 26 } 27 function setterName(x) { 28 return Object.getOwnPropertyDescriptor(a, x).set.name 29 } 30 31 assertEq(/get 2/.test(getterName(2)), true) 32 assertEq(/get 3/.test(getterName(3n)), true) 33 34 assertEq(/set 2/.test(setterName(2)), true) 35 assertEq(/set 3/.test(setterName(3n)), true) 36 37 let b = { 38 0: 0, 39 [0]: 'dupe', 40 1n: 1, 41 [1n]: 'dupe', 42 [2]: 2, 43 2: 'dupe', 44 [3n]: 3, 45 3n: 'dupe' 46 }; 47 assertEq(b[0], 'dupe'); 48 assertEq(b[1n], 'dupe'); 49 assertEq(b[2], 'dupe'); 50 assertEq(b[3n], 'dupe'); 51 52 let c = { 53 0: 0, 54 0.0: 'dupe', 55 }; 56 assertEq(c[0], 'dupe'); 57 58 let d = { 59 0: 0, 60 '0': 'dupe', 61 }; 62 assertEq(d[0], 'dupe'); 63 64 // Test numeric property destructuring. 65 let {1: x} = {1: 1}; 66 let {1n: y} = {1n: 1n}; 67 68 assertEq(x, 1); 69 assertEq(y, 1n);