load(libdir + "asserts.js"); var LENGTH = 1024, SYMBOL_INDEX = 999; var big = []; for (var i = 0; i < LENGTH; i++) big[i] = (i === SYMBOL_INDEX ? Symbol.for("comet") : i); var progress; function copy(arr, big) { for (var i = 0; i < LENGTH; i++) { arr[i] = big[i]; progress = i; } } for (var T of [Uint8Array, Uint8ClampedArray, Int16Array, Float32Array]) { // Typed array constructors convert symbols using ToNumber, which throws. assertThrowsInstanceOf(() => new T(big), TypeError); // Element assignment does the same. var arr = new T(big.length); for (var k = 0; k < 3; k++) { progress = -1; assertThrowsInstanceOf(() => copy(arr, big), TypeError); assertEq(progress, SYMBOL_INDEX - 1); assertEq(arr[SYMBOL_INDEX], 0); } }