// Copyright (C) 2020 Sony Interactive Entertainment Inc. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- esid: sec-array.prototype.shift description: > Array#shift throws TypeError if this value's "length" property was defined with [[Writable]]: false. info: | Array.prototype.shift ( ) ... 3. If len is zero, then a. Perform ? Set(O, "length", 0, true). ... 8. Perform ? Set(O, "length", len - 1, true). Set ( O, P, V, Throw ) ... 4. Let success be ? O.[[Set]](P, V, O). 5. If success is false and Throw is true, throw a TypeError exception. ---*/ assert.throws(TypeError, () => { Array.prototype.shift.call(''); }, "Array.prototype.shift.call('')"); assert.throws(TypeError, () => { Array.prototype.shift.call('abc'); }, "Array.prototype.shift.call('abc')"); assert.throws(TypeError, () => { Array.prototype.shift.call(function() {}); }, "Array.prototype.shift.call(function() {})"); assert.throws(TypeError, () => { Array.prototype.shift.call(Object.defineProperty({}, 'length', {writable: false})); }, "Array.prototype.shift.call(Object.defineProperty({}, 'length', {writable: false}))"); reportCompare(0, 0);