Index: test/mjsunit/es6/legacy-subclassing.js |
diff --git a/test/mjsunit/es6/legacy-subclassing.js b/test/mjsunit/es6/legacy-subclassing.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..517efb755df08ab864c05e4fcb9205bbad30f67b |
--- /dev/null |
+++ b/test/mjsunit/es6/legacy-subclassing.js |
@@ -0,0 +1,27 @@ |
+// Copyright 2015 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. |
+ |
+// Before Symbol.species was added, ArrayBuffer subclasses constructed |
adamk
2016/01/12 00:11:00
Might as well add:
// Flags: --noharmony-species
|
+// ArrayBuffers, but TypedArray and Promise subclasses constructed an instance |
+// of the subclass. |
+ |
+'use strict'; |
+ |
+assertEquals(undefined, Symbol.species); |
+ |
+class MyUint8Array extends Uint8Array { } |
+Object.defineProperty(MyUint8Array.prototype, "BYTES_PER_ELEMENT", {value: 1}); |
+let myArray = new MyUint8Array(3); |
+assertEquals(MyUint8Array, myArray.constructor); |
+assertEquals(MyUint8Array, myArray.map(x => x + 1).constructor); |
+ |
+class MyArrayBuffer extends ArrayBuffer { } |
+let myBuffer = new MyArrayBuffer(0); |
+assertEquals(MyArrayBuffer, myBuffer.constructor); |
+assertEquals(ArrayBuffer, myBuffer.slice().constructor); |
+ |
+class MyPromise extends Promise { } |
+let myPromise = new MyPromise(() => {}); |
+assertEquals(MyPromise, myPromise.constructor); |
+assertEquals(MyPromise, myPromise.then().constructor); |