massive update, probably broken
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / core-js / internals / object-set-prototype-of.js
1 /* eslint-disable no-proto -- safe */
2 var uncurryThis = require('../internals/function-uncurry-this');
3 var anObject = require('../internals/an-object');
4 var aPossiblePrototype = require('../internals/a-possible-prototype');
5
6 // `Object.setPrototypeOf` method
7 // https://tc39.es/ecma262/#sec-object.setprototypeof
8 // Works with __proto__ only. Old v8 can't work with null proto objects.
9 // eslint-disable-next-line es/no-object-setprototypeof -- safe
10 module.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {
11   var CORRECT_SETTER = false;
12   var test = {};
13   var setter;
14   try {
15     // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
16     setter = uncurryThis(Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set);
17     setter(test, []);
18     CORRECT_SETTER = test instanceof Array;
19   } catch (error) { /* empty */ }
20   return function setPrototypeOf(O, proto) {
21     anObject(O);
22     aPossiblePrototype(proto);
23     if (CORRECT_SETTER) setter(O, proto);
24     else O.__proto__ = proto;
25     return O;
26   };
27 }() : undefined);