| // 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. |
| |
| "use strict"; |
| // If @@isConcatSpreadable is not used, the value of IsArray(O) |
| // is used to determine the spreadable property. |
| class A extends Array {} |
| var obj = [].concat(new A(1, 2, 3), new A(4, 5, 6), new A(7, 8, 9)); |
| assertEquals(9, obj.length); |
| for (var i = 0; i < obj.length; ++i) { |
| assertEquals(i + 1, obj[i]); |
| } |
| |
| // TODO(caitp): when concat is called on instances of classes which extend |
| // Array, they should: |
| // |
| // - return an instance of the class, rather than an Array instance (if from |
| // same Realm) |
| // - always treat such classes as concat-spreadable |