1 | 'use strict';
|
2 | var DESCRIPTORS = require('../internals/descriptors');
|
3 | var isArray = require('../internals/is-array');
|
4 |
|
5 | var $TypeError = TypeError;
|
6 |
|
7 | var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
|
8 |
|
9 |
|
10 | var SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !function () {
|
11 |
|
12 | if (this !== undefined) return true;
|
13 | try {
|
14 |
|
15 | Object.defineProperty([], 'length', { writable: false }).length = 1;
|
16 | } catch (error) {
|
17 | return error instanceof TypeError;
|
18 | }
|
19 | }();
|
20 |
|
21 | module.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) {
|
22 | if (isArray(O) && !getOwnPropertyDescriptor(O, 'length').writable) {
|
23 | throw new $TypeError('Cannot set read only .length');
|
24 | } return O.length = length;
|
25 | } : function (O, length) {
|
26 | return O.length = length;
|
27 | };
|