| 'use strict'; |
| var DESCRIPTORS = require('../internals/descriptors'); |
| var isArray = require('../internals/is-array'); |
|
|
| var $TypeError = TypeError; |
| |
| var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; |
|
|
| |
| var SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !function () { |
| |
| if (this !== undefined) return true; |
| try { |
| |
| Object.defineProperty([], 'length', { writable: false }).length = 1; |
| } catch (error) { |
| return error instanceof TypeError; |
| } |
| }(); |
|
|
| module.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) { |
| if (isArray(O) && !getOwnPropertyDescriptor(O, 'length').writable) { |
| throw new $TypeError('Cannot set read only .length'); |
| } return O.length = length; |
| } : function (O, length) { |
| return O.length = length; |
| }; |
|
|