aboutsummaryrefslogtreecommitdiff
path: root/node_modules/core-js/modules/$.set-proto.js
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2017-05-03 15:35:00 +0200
committerFlorian Dold <florian.dold@gmail.com>2017-05-03 15:35:00 +0200
commitde98e0b232509d5f40c135d540a70e415272ff85 (patch)
treea79222a5b58484ab3b80d18efcaaa7ccc4769b33 /node_modules/core-js/modules/$.set-proto.js
parente0c9d480a73fa629c1e4a47d3e721f1d2d345406 (diff)
node_modules
Diffstat (limited to 'node_modules/core-js/modules/$.set-proto.js')
-rw-r--r--node_modules/core-js/modules/$.set-proto.js26
1 files changed, 26 insertions, 0 deletions
diff --git a/node_modules/core-js/modules/$.set-proto.js b/node_modules/core-js/modules/$.set-proto.js
new file mode 100644
index 000000000..b1edd681d
--- /dev/null
+++ b/node_modules/core-js/modules/$.set-proto.js
@@ -0,0 +1,26 @@
+// Works with __proto__ only. Old v8 can't work with null proto objects.
+/* eslint-disable no-proto */
+var getDesc = require('./$').getDesc
+ , isObject = require('./$.is-object')
+ , anObject = require('./$.an-object');
+var check = function(O, proto){
+ anObject(O);
+ if(!isObject(proto) && proto !== null)throw TypeError(proto + ": can't set as prototype!");
+};
+module.exports = {
+ set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line
+ function(test, buggy, set){
+ try {
+ set = require('./$.ctx')(Function.call, getDesc(Object.prototype, '__proto__').set, 2);
+ set(test, []);
+ buggy = !(test instanceof Array);
+ } catch(e){ buggy = true; }
+ return function setPrototypeOf(O, proto){
+ check(O, proto);
+ if(buggy)O.__proto__ = proto;
+ else set(O, proto);
+ return O;
+ };
+ }({}, false) : undefined),
+ check: check
+}; \ No newline at end of file