Giant blob of minor changes
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / core-js / internals / array-method-uses-to-length.js
1 var DESCRIPTORS = require('../internals/descriptors');
2 var fails = require('../internals/fails');
3 var has = require('../internals/has');
4
5 var defineProperty = Object.defineProperty;
6 var cache = {};
7
8 var thrower = function (it) { throw it; };
9
10 module.exports = function (METHOD_NAME, options) {
11   if (has(cache, METHOD_NAME)) return cache[METHOD_NAME];
12   if (!options) options = {};
13   var method = [][METHOD_NAME];
14   var ACCESSORS = has(options, 'ACCESSORS') ? options.ACCESSORS : false;
15   var argument0 = has(options, 0) ? options[0] : thrower;
16   var argument1 = has(options, 1) ? options[1] : undefined;
17
18   return cache[METHOD_NAME] = !!method && !fails(function () {
19     if (ACCESSORS && !DESCRIPTORS) return true;
20     var O = { length: -1 };
21
22     if (ACCESSORS) defineProperty(O, 1, { enumerable: true, get: thrower });
23     else O[1] = 1;
24
25     method.call(O, argument0, argument1);
26   });
27 };