1 // Copyright 2016 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: --allow-natives-syntax 6 7 // Neutered source 8 var ab = new ArrayBuffer(10); 9 ab.constructor = { get [Symbol.species]() { %ArrayBufferNeuter(ab); return ArrayBuffer; } }; 10 assertThrows(() => ab.slice(0), TypeError); 11 12 // Neutered target 13 class NeuteredArrayBuffer extends ArrayBuffer { 14 constructor(...args) { 15 super(...args); 16 %ArrayBufferNeuter(this); 17 } 18 } 19 20 var ab2 = new ArrayBuffer(10); 21 ab2.constructor = NeuteredArrayBuffer; 22 assertThrows(() => ab2.slice(0), TypeError); 23