OLD | NEW |
| (Empty) |
1 // Copyright 2015 the V8 project authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 // Flags: --harmony-species | |
6 | |
7 // ArrayBuffer.prototype.slice makes subclass and checks length | |
8 | |
9 class MyArrayBuffer extends ArrayBuffer { } | |
10 assertEquals(MyArrayBuffer, new MyArrayBuffer(0).slice().constructor); | |
11 | |
12 class MyShortArrayBuffer extends ArrayBuffer { | |
13 constructor(length) { super(length - 1); } | |
14 } | |
15 assertThrows(() => new MyShortArrayBuffer(5).slice(0, 4), TypeError); | |
16 | |
17 class SingletonArrayBuffer extends ArrayBuffer { | |
18 constructor(...args) { | |
19 if (SingletonArrayBuffer.cached) return SingletonArrayBuffer.cached; | |
20 super(...args); | |
21 SingletonArrayBuffer.cached = this; | |
22 } | |
23 } | |
24 assertThrows(() => new SingletonArrayBuffer(5).slice(0, 4), TypeError); | |
25 | |
26 class NonArrayBuffer extends ArrayBuffer { | |
27 constructor() { | |
28 return {}; | |
29 } | |
30 } | |
31 assertThrows(() => new NonArrayBuffer(5).slice(0, 4), TypeError); | |
32 | |
33 // Species fallback is ArrayBuffer | |
34 class UndefinedArrayBuffer extends ArrayBuffer { } | |
35 UndefinedArrayBuffer.prototype.constructor = undefined; | |
36 assertEquals(ArrayBuffer, new UndefinedArrayBuffer(0).slice().constructor); | |
OLD | NEW |