| 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-proxies --harmony-reflect | 5 // Flags: --harmony-proxies --harmony-reflect |
| 6 | 6 |
| 7 (function testArrayConcatArity() { | 7 (function testArrayConcatArity() { |
| 8 "use strict"; | 8 "use strict"; |
| 9 assertEquals(1, Array.prototype.concat.length); | 9 assertEquals(1, Array.prototype.concat.length); |
| 10 })(); | 10 })(); |
| (...skipping 249 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 260 var defValue = ta[0]; | 260 var defValue = ta[0]; |
| 261 var expected = new Array(4000); | 261 var expected = new Array(4000); |
| 262 expected[0] = defValue; | 262 expected[0] = defValue; |
| 263 | 263 |
| 264 Object.defineProperty(ta, "length", { value: 4000 }); | 264 Object.defineProperty(ta, "length", { value: 4000 }); |
| 265 ta[Symbol.isConcatSpreadable] = true; | 265 ta[Symbol.isConcatSpreadable] = true; |
| 266 assertEquals(expected, [].concat(ta)); | 266 assertEquals(expected, [].concat(ta)); |
| 267 } | 267 } |
| 268 | 268 |
| 269 (function testConcatSmallTypedArray() { | 269 (function testConcatSmallTypedArray() { |
| 270 var max = [Math.pow(2, 8), Math.pow(2, 16), Math.pow(2, 32), false, false]; | 270 var length = 1; |
| 271 [ | 271 testConcatTypedArray(Uint8Array, length, Math.pow(2, 8)); |
| 272 Uint8Array, | 272 testConcatTypedArray(Uint16Array, length, Math.pow(2, 16)); |
| 273 Uint16Array, | 273 testConcatTypedArray(Uint32Array, length, Math.pow(2, 32)); |
| 274 Uint32Array, | 274 testConcatTypedArray(Float32Array, length, false); |
| 275 Float32Array, | 275 testConcatTypedArray(Float64Array, length, false); |
| 276 Float64Array | |
| 277 ].forEach(function(ctor, i) { | |
| 278 testConcatTypedArray(ctor, 1, max[i]); | |
| 279 }); | |
| 280 })(); | 276 })(); |
| 281 | 277 |
| 282 | 278 |
| 283 (function testConcatLargeTypedArray() { | 279 (function testConcatLargeTypedArray() { |
| 284 var max = [Math.pow(2, 8), Math.pow(2, 16), Math.pow(2, 32), false, false]; | 280 var length = 4000; |
| 285 [ | 281 testConcatTypedArray(Uint8Array, length, Math.pow(2, 8)); |
| 286 Uint8Array, | 282 testConcatTypedArray(Uint16Array, length, Math.pow(2, 16)); |
| 287 Uint16Array, | 283 testConcatTypedArray(Uint32Array, length, Math.pow(2, 32)); |
| 288 Uint32Array, | 284 testConcatTypedArray(Float32Array, length, false); |
| 289 Float32Array, | 285 testConcatTypedArray(Float64Array, length, false); |
| 290 Float64Array | |
| 291 ].forEach(function(ctor, i) { | |
| 292 testConcatTypedArray(ctor, 4000, max[i]); | |
| 293 }); | |
| 294 })(); | 286 })(); |
| 295 | 287 |
| 296 | 288 |
| 297 (function testConcatStrictArguments() { | 289 (function testConcatStrictArguments() { |
| 298 var args = (function(a, b, c) { "use strict"; return arguments; })(1,2,3); | 290 var args = (function(a, b, c) { "use strict"; return arguments; })(1,2,3); |
| 299 args[Symbol.isConcatSpreadable] = true; | 291 args[Symbol.isConcatSpreadable] = true; |
| 300 assertEquals([1, 2, 3, 1, 2, 3], [].concat(args, args)); | 292 assertEquals([1, 2, 3, 1, 2, 3], [].concat(args, args)); |
| 301 | 293 |
| 302 Object.defineProperty(args, "length", { value: 6 }); | 294 Object.defineProperty(args, "length", { value: 6 }); |
| 303 assertEquals([1, 2, 3, void 0, void 0, void 0], [].concat(args)); | 295 assertEquals([1, 2, 3, void 0, void 0, void 0], [].concat(args)); |
| (...skipping 563 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 867 if (key === "length") return Symbol(); | 859 if (key === "length") return Symbol(); |
| 868 if (key === "2") return "baz"; | 860 if (key === "2") return "baz"; |
| 869 if (key === "3") return "bar"; | 861 if (key === "3") return "bar"; |
| 870 }; | 862 }; |
| 871 var target = []; | 863 var target = []; |
| 872 var obj = new Proxy(target, {get: getTrap, has: () => true}); | 864 var obj = new Proxy(target, {get: getTrap, has: () => true}); |
| 873 | 865 |
| 874 assertThrows(() => [].concat(obj), TypeError); | 866 assertThrows(() => [].concat(obj), TypeError); |
| 875 assertThrows(() => Array.prototype.concat.apply(obj), TypeError); | 867 assertThrows(() => Array.prototype.concat.apply(obj), TypeError); |
| 876 })(); | 868 })(); |
| OLD | NEW |