summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/cacheir/optimize-get-iterator-4.js
blob: a1ee65e7843b7fb4afe470a30b163f650c3c858b (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
(() => {
  let iterablesBase = [
    [1,2],
    [1,2,3],
    [1,2,3],
    [3,2,1],
  ];

  let iterables = [];
  for (let i = 0; i < 1000; i++) {
    iterables.push([...iterablesBase[i % iterablesBase.length]]);
  }

  iterables.push(new Map([[1, 3], [2,4]]).keys());

  function testDestructuringInitialization(a) {
    let [x,y] = a;
    return y;
  }

  function testDestructuringAssignment(a) {
    let x, y;
    [x,y] = a;
    return y;
  }

  for (let i = 0; i < iterables.length; i++) {
    assertEq(testDestructuringInitialization(iterables[i]), 2);
  }

  // refresh the last iterator
  iterables[iterables.length - 1] = new Map([[1, 3], [2,4]]).keys();
  for (let i = 0; i < iterables.length; i++) {
    assertEq(testDestructuringAssignment(iterables[i]), 2);
  }
})();