diff --git a/test/language/subclassing/ArrayBuffer/regular-subclassing.js b/test/language/subclassing/ArrayBuffer/regular-subclassing.js new file mode 100644 index 0000000000000000000000000000000000000000..9df654ce51536ead088ddc26f101ad95c5211fbf --- /dev/null +++ b/test/language/subclassing/ArrayBuffer/regular-subclassing.js @@ -0,0 +1,31 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +es6id: 24.1.2 +description: Subclassing the ArrayBuffer object +info: > + 24.1.2 The ArrayBuffer Constructor + + ... + + The ArrayBuffer constructor is designed to be subclassable. It may be used as + the value of an extends clause of a class definition. Subclass constructors + that intend to inherit the specified ArrayBuffer behaviour must include a + super call to the ArrayBuffer constructor to create and initialize subclass + instances with the internal state necessary to support the + ArrayBuffer.prototype built-in methods. +---*/ + +class AB extends ArrayBuffer {} + +var ab = new AB(4); + +var sliced = ab.slice(0, 1); + +assert(sliced instanceof AB); +assert(sliced instanceof ArrayBuffer); +assert.notSameValue(ab, sliced); + +assert.throws(RangeError, function() { + new AB(); +}); diff --git a/test/language/subclassing/ArrayBuffer/super-must-be-called.js b/test/language/subclassing/ArrayBuffer/super-must-be-called.js new file mode 100644 index 0000000000000000000000000000000000000000..e58e694ba4051b463588a2280afc4194ace6c9c1 --- /dev/null +++ b/test/language/subclassing/ArrayBuffer/super-must-be-called.js @@ -0,0 +1,33 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +es6id: 24.1.2 +description: Super need to be called to initialize internals +info: > + 24.1.2 The ArrayBuffer Constructor + + ... + + The ArrayBuffer constructor is designed to be subclassable. It may be used as + the value of an extends clause of a class definition. Subclass constructors + that intend to inherit the specified ArrayBuffer behaviour must include a + super call to the ArrayBuffer constructor to create and initialize subclass + instances with the internal state necessary to support the + ArrayBuffer.prototype built-in methods. +---*/ + +class AB1 extends ArrayBuffer { + constructor() {} +} + +assert.throws(ReferenceError, function() { + new AB1(1); +}); + +class AB2 extends ArrayBuffer { + constructor(length) { + super(length); + } +} + +new AB2(1);