| Index: test/mjsunit/harmony/rest-params.js
|
| diff --git a/test/mjsunit/harmony/rest-params.js b/test/mjsunit/harmony/rest-params.js
|
| deleted file mode 100644
|
| index 6ceb87e3318fd725477e7679541311872314cdec..0000000000000000000000000000000000000000
|
| --- a/test/mjsunit/harmony/rest-params.js
|
| +++ /dev/null
|
| @@ -1,221 +0,0 @@
|
| -// Copyright 2014 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.
|
| -
|
| -// Flags: --harmony-rest-parameters
|
| -
|
| -(function testRestIndex() {
|
| - assertEquals(5, (function(...args) { return args.length; })(1,2,3,4,5));
|
| - assertEquals(4, (function(a, ...args) { return args.length; })(1,2,3,4,5));
|
| - assertEquals(3, (function(a, b, ...args) { return args.length; })(1,2,3,4,5));
|
| - assertEquals(2, (function(a, b, c, ...args) {
|
| - return args.length; })(1,2,3,4,5));
|
| - assertEquals(1, (function(a, b, c, d, ...args) {
|
| - return args.length; })(1,2,3,4,5));
|
| - assertEquals(0, (function(a, b, c, d, e, ...args) {
|
| - return args.length; })(1,2,3,4,5));
|
| -})();
|
| -
|
| -
|
| -var strictTest = (function() {
|
| - "use strict";
|
| - return function strictTest(a, b, ...c) {
|
| - assertEquals(Array, c.constructor);
|
| - assertTrue(Array.isArray(c));
|
| -
|
| - var expectedLength = arguments.length >= 3 ? arguments.length - 2 : 0;
|
| - assertEquals(expectedLength, c.length);
|
| -
|
| - for (var i = 2, j = 0; i < arguments.length; ++i) {
|
| - assertEquals(c[j++], arguments[i]);
|
| - }
|
| - };
|
| -})();
|
| -
|
| -
|
| -function sloppyTest(a, b, ...c) {
|
| - assertEquals(Array, c.constructor);
|
| - assertTrue(Array.isArray(c));
|
| -
|
| - var expectedLength = arguments.length >= 3 ? arguments.length - 2 : 0;
|
| - assertEquals(expectedLength, c.length);
|
| -
|
| - for (var i = 2, j = 0; i < arguments.length; ++i) {
|
| - assertEquals(c[j++], arguments[i]);
|
| - }
|
| -}
|
| -
|
| -
|
| -var O = {
|
| - strict: strictTest,
|
| - sloppy: sloppyTest
|
| -};
|
| -
|
| -(function testStrictRestParamArity() {
|
| - assertEquals(2, strictTest.length);
|
| - assertEquals(2, O.strict.length);
|
| -})();
|
| -
|
| -
|
| -(function testRestParamsStrictMode() {
|
| - strictTest();
|
| - strictTest(1, 2);
|
| - strictTest(1, 2, 3, 4, 5, 6);
|
| - strictTest(1, 2, 3);
|
| - O.strict();
|
| - O.strict(1, 2);
|
| - O.strict(1, 2, 3, 4, 5, 6);
|
| - O.strict(1, 2, 3);
|
| -})();
|
| -
|
| -
|
| -(function testRestParamsStrictModeApply() {
|
| - strictTest.apply(null, []);
|
| - strictTest.apply(null, [1, 2]);
|
| - strictTest.apply(null, [1, 2, 3, 4, 5, 6]);
|
| - strictTest.apply(null, [1, 2, 3]);
|
| - O.strict.apply(O, []);
|
| - O.strict.apply(O, [1, 2]);
|
| - O.strict.apply(O, [1, 2, 3, 4, 5, 6]);
|
| - O.strict.apply(O, [1, 2, 3]);
|
| -})();
|
| -
|
| -
|
| -(function testRestParamsStrictModeCall() {
|
| - strictTest.call(null);
|
| - strictTest.call(null, 1, 2);
|
| - strictTest.call(null, 1, 2, 3, 4, 5, 6);
|
| - strictTest.call(null, 1, 2, 3);
|
| - O.strict.call(O);
|
| - O.strict.call(O, 1, 2);
|
| - O.strict.call(O, 1, 2, 3, 4, 5, 6);
|
| - O.strict.call(O, 1, 2, 3);
|
| -})();
|
| -
|
| -
|
| -(function testsloppyRestParamArity() {
|
| - assertEquals(2, sloppyTest.length);
|
| - assertEquals(2, O.sloppy.length);
|
| -})();
|
| -
|
| -
|
| -(function testRestParamssloppyMode() {
|
| - sloppyTest();
|
| - sloppyTest(1, 2);
|
| - sloppyTest(1, 2, 3, 4, 5, 6);
|
| - sloppyTest(1, 2, 3);
|
| - O.sloppy();
|
| - O.sloppy(1, 2);
|
| - O.sloppy(1, 2, 3, 4, 5, 6);
|
| - O.sloppy(1, 2, 3);
|
| -})();
|
| -
|
| -
|
| -(function testRestParamssloppyModeApply() {
|
| - sloppyTest.apply(null, []);
|
| - sloppyTest.apply(null, [1, 2]);
|
| - sloppyTest.apply(null, [1, 2, 3, 4, 5, 6]);
|
| - sloppyTest.apply(null, [1, 2, 3]);
|
| - O.sloppy.apply(O, []);
|
| - O.sloppy.apply(O, [1, 2]);
|
| - O.sloppy.apply(O, [1, 2, 3, 4, 5, 6]);
|
| - O.sloppy.apply(O, [1, 2, 3]);
|
| -})();
|
| -
|
| -
|
| -(function testRestParamssloppyModeCall() {
|
| - sloppyTest.call(null);
|
| - sloppyTest.call(null, 1, 2);
|
| - sloppyTest.call(null, 1, 2, 3, 4, 5, 6);
|
| - sloppyTest.call(null, 1, 2, 3);
|
| - O.sloppy.call(O);
|
| - O.sloppy.call(O, 1, 2);
|
| - O.sloppy.call(O, 1, 2, 3, 4, 5, 6);
|
| - O.sloppy.call(O, 1, 2, 3);
|
| -})();
|
| -
|
| -
|
| -(function testUnmappedArguments() {
|
| - // Strict/Unmapped arguments should always be used for functions with rest
|
| - // parameters
|
| - assertThrows(function(...rest) { return arguments.caller; }, TypeError);
|
| - assertThrows(function(...rest) { return arguments.callee; }, TypeError);
|
| - // TODO(caitp): figure out why this doesn't throw sometimes, even though the
|
| - // getter always does =)
|
| - // assertThrows(function(...rest) { arguments.caller = 1; }, TypeError);
|
| - // assertThrows(function(...rest) { arguments.callee = 1; }, TypeError);
|
| -})();
|
| -
|
| -
|
| -(function testNoAliasArgumentsStrict() {
|
| - ((function() {
|
| - "use strict";
|
| - return (function strictF(a, ...rest) {
|
| - arguments[0] = 1;
|
| - assertEquals(3, a);
|
| - arguments[1] = 2;
|
| - assertArrayEquals([4, 5], rest);
|
| - });
|
| - })())(3, 4, 5);
|
| -})();
|
| -
|
| -
|
| -(function testNoAliasArgumentsSloppy() {
|
| - function sloppyF(a, ...rest) {
|
| - arguments[0] = 1;
|
| - assertEquals(3, a);
|
| - arguments[1] = 2;
|
| - assertArrayEquals([4, 5], rest);
|
| - }
|
| - sloppyF(3, 4, 5);
|
| -})();
|
| -
|
| -
|
| -(function testRestParamsWithNewTarget() {
|
| - "use strict";
|
| - class Base {
|
| - constructor(...a) {
|
| - this.base = a;
|
| - assertEquals(arguments.length, a.length);
|
| - var args = [];
|
| - for (var i = 0; i < arguments.length; ++i) {
|
| - args.push(arguments[i]);
|
| - }
|
| - assertEquals(args, a);
|
| - }
|
| - }
|
| - class Child extends Base {
|
| - constructor(...b) {
|
| - super(1, 2, 3);
|
| - this.child = b;
|
| - assertEquals(arguments.length, b.length);
|
| - var args = [];
|
| - for (var i = 0; i < arguments.length; ++i) {
|
| - args.push(arguments[i]);
|
| - }
|
| - assertEquals(args, b);
|
| - }
|
| - }
|
| -
|
| - var c = new Child(1, 2, 3);
|
| - assertEquals([1, 2, 3], c.child);
|
| - assertEquals([1, 2, 3], c.base);
|
| -})();
|
| -
|
| -(function TestDirectiveThrows() {
|
| - "use strict";
|
| -
|
| - assertThrows(
|
| - function(){ eval("function(...rest){'use strict';}") }, SyntaxError);
|
| - assertThrows(function(){ eval("(...rest) => {'use strict';}") }, SyntaxError);
|
| - assertThrows(
|
| - function(){ eval("(class{foo(...rest) {'use strict';}});") }, SyntaxError);
|
| -
|
| - assertThrows(
|
| - function(){ eval("function(a, ...rest){'use strict';}") }, SyntaxError);
|
| - assertThrows(
|
| - function(){ eval("(a, ...rest) => {'use strict';}") }, SyntaxError);
|
| - assertThrows(
|
| - function(){ eval("(class{foo(a, ...rest) {'use strict';}});") },
|
| - SyntaxError);
|
| -})();
|
|
|