| OLD | NEW |
| 1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // Flags: --harmony-rest-parameters --harmony-arrow-functions | 5 // Flags: --harmony-rest-parameters --harmony-arrow-functions |
| 6 | 6 |
| 7 (function testRestIndex() { | 7 (function testRestIndex() { |
| 8 assertEquals(5, ((...args) => args.length)(1,2,3,4,5)); | 8 assertEquals(5, ((...args) => args.length)(1,2,3,4,5)); |
| 9 assertEquals(4, ((a, ...args) => args.length)(1,2,3,4,5)); | 9 assertEquals(4, ((a, ...args) => args.length)(1,2,3,4,5)); |
| 10 assertEquals(3, ((a, b, ...args) => args.length)(1,2,3,4,5)); | 10 assertEquals(3, ((a, b, ...args) => args.length)(1,2,3,4,5)); |
| 11 assertEquals(2, ((a, b, c, ...args) => args.length)(1,2,3,4,5)); | 11 assertEquals(2, ((a, b, c, ...args) => args.length)(1,2,3,4,5)); |
| 12 assertEquals(1, ((a, b, c, d, ...args) => args.length)(1,2,3,4,5)); | 12 assertEquals(1, ((a, b, c, d, ...args) => args.length)(1,2,3,4,5)); |
| 13 assertEquals(0, ((a, b, c, d, e, ...args) => args.length)(1,2,3,4,5)); | 13 assertEquals(0, ((a, b, c, d, e, ...args) => args.length)(1,2,3,4,5)); |
| 14 })(); | 14 })(); |
| 15 | 15 |
| 16 // strictTest and sloppyTest should be called with descending natural | 16 // strictTest and sloppyTest should be called with descending natural |
| 17 // numbers, as in: | 17 // numbers, as in: |
| 18 // | 18 // |
| 19 // strictTest(6,5,4,3,2,1) | 19 // strictTest(6,5,4,3,2,1) |
| 20 // | 20 // |
| 21 var strictTest = (a, b, ...c) => { | 21 var strictTest = (() => { |
| 22 "use strict"; | 22 "use strict"; |
| 23 assertEquals(Array, c.constructor); | 23 return (a, b, ...c) => { |
| 24 assertTrue(Array.isArray(c)); | 24 assertEquals(Array, c.constructor); |
| 25 assertTrue(Array.isArray(c)); |
| 25 | 26 |
| 26 var expectedLength = (a === undefined) ? 0 : a - 2; | 27 var expectedLength = (a === undefined) ? 0 : a - 2; |
| 27 assertEquals(expectedLength, c.length); | 28 assertEquals(expectedLength, c.length); |
| 28 | 29 |
| 29 for (var i = 2; i < a; ++i) { | 30 for (var i = 2; i < a; ++i) { |
| 30 assertEquals(c[i - 2], a - i); | 31 assertEquals(c[i - 2], a - i); |
| 31 } | 32 } |
| 32 } | 33 }; |
| 34 })(); |
| 33 | 35 |
| 34 var sloppyTest = (a, b, ...c) => { | 36 var sloppyTest = (a, b, ...c) => { |
| 35 assertEquals(Array, c.constructor); | 37 assertEquals(Array, c.constructor); |
| 36 assertTrue(Array.isArray(c)); | 38 assertTrue(Array.isArray(c)); |
| 37 | 39 |
| 38 var expectedLength = (a === undefined) ? 0 : a - 2; | 40 var expectedLength = (a === undefined) ? 0 : a - 2; |
| 39 assertEquals(expectedLength, c.length); | 41 assertEquals(expectedLength, c.length); |
| 40 | 42 |
| 41 for (var i = 2; i < a; ++i) { | 43 for (var i = 2; i < a; ++i) { |
| 42 assertEquals(c[i - 2], a - i); | 44 assertEquals(c[i - 2], a - i); |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 133 })(); | 135 })(); |
| 134 | 136 |
| 135 | 137 |
| 136 (function testUnmappedArguments() { | 138 (function testUnmappedArguments() { |
| 137 // Normal functions make their arguments object unmapped, but arrow | 139 // Normal functions make their arguments object unmapped, but arrow |
| 138 // functions don't have an arguments object anyway. Check that the | 140 // functions don't have an arguments object anyway. Check that the |
| 139 // right thing happens for arguments in arrow functions with rest | 141 // right thing happens for arguments in arrow functions with rest |
| 140 // parameters. | 142 // parameters. |
| 141 assertSame(arguments, ((...rest) => arguments)()); | 143 assertSame(arguments, ((...rest) => arguments)()); |
| 142 })(); | 144 })(); |
| OLD | NEW |