regress-5337.js 1.19 KB
Newer Older
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
// Copyright 2016 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

(function testNestedSpreadsInPatterns() {
  (function () {
    var [...[...x]] = [42, 17];
    assertArrayEquals([42, 17], x);
  })();
  (function () {
    let [...[...x]] = [42, 17];
    assertArrayEquals([42, 17], x);
  })();
  (function () {
    const [...[...x]] = [42, 17];
    assertArrayEquals([42, 17], x);
  })();
  (function () {
    var x; [...[...x]] = [42, 17];
    assertArrayEquals([42, 17], x);
  })();

  function f1([...[...x]] = [42, 17]) { return x; }
  assertArrayEquals([42, 17], f1());
  assertArrayEquals([1, 2, 3], f1([1, 2, 3]));

  var f2 = function ([...[...x]] = [42, 17]) { return x; }
  assertArrayEquals([42, 17], f2());
  assertArrayEquals([1, 2, 3], f2([1, 2, 3]));

  // The following two were failing in debug mode, until v8:5337 was fixed.
  var f3 = ([...[...x]] = [42, 17]) => { return x; };
  assertArrayEquals([42, 17], f3());
  assertArrayEquals([1, 2, 3], f3([1, 2, 3]));

  var f4 = ([...[...x]] = [42, 17]) => x;
  assertArrayEquals([42, 17], f4());
  assertArrayEquals([1, 2, 3], f4([1, 2, 3]));
})();