// Copyright 2018 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. // Flags: --allow-natives-syntax const constructors = [ [Uint8Array, [0, 1]], [Int8Array, [0, 1]], [Uint16Array, [0, 1]], [Int16Array, [0, 1]], [Uint32Array, [0, 1]], [Int32Array, [0, 1]], [Float32Array, [0, 1]], [Float64Array, [0, 1]], [Uint8ClampedArray, [0, 1]], [BigInt64Array, [0n, 1n]], [BigUint64Array, [0n, 1n]] ]; let typedArray; function detachBuffer() { %ArrayBufferDetach(typedArray.buffer); return 'a'; } Number.prototype.toString = detachBuffer; BigInt.prototype.toString = detachBuffer; Number.prototype.toLocaleString = detachBuffer; BigInt.prototype.toLocaleString = detachBuffer; constructors.forEach(([constructor, arr]) => { typedArray = new constructor(arr); assertSame(typedArray.join(), '0,1'); assertSame(typedArray.toLocaleString(), 'a,'); });