Merge pull request #468 from AluisioASG/core-aliasable

Whitelist constructors aliasable to core-js
This commit is contained in:
Sebastian McKenzie 2015-01-13 01:46:19 +11:00
commit 17d198f3d6
6 changed files with 25 additions and 15 deletions

View File

@ -8,6 +8,16 @@ var coreHas = function (node) {
return node.name !== "_" && _.has(core, node.name);
};
var ALIASABLE_CONSTRUCTORS = [
"Symbol",
"Promise",
"Map",
"WeakMap",
"Set",
"WeakSet",
"Dict",
];
exports.optional = true;
exports.ast = {
@ -31,8 +41,8 @@ exports.ast = {
this.skip();
return t.prependToMemberExpression(node, file._coreId);
}
} else if (t.isIdentifier(node) && !t.isMemberExpression(parent) && t.isReferenced(node, parent) && node.name === "Symbol") {
// new Symbol -> new _core.Symbol
} else if (t.isIdentifier(node) && !t.isMemberExpression(parent) && t.isReferenced(node, parent) && _.contains(ALIASABLE_CONSTRUCTORS, node.name)) {
// Symbol() -> _core.Symbol(); new Promise -> new _core.Promise
return t.memberExpression(file._coreId, node);
} else if (t.isCallExpression(node)) {
// arr[Symbol.iterator]() -> _core.$for.getIterator(arr)

View File

@ -0,0 +1,7 @@
obj.constructor === Object;
obj.constructor === Promise;
Symbol();
Symbol("test");
new Map();

View File

@ -6,5 +6,10 @@ var _interopRequire = function (obj) {
var _core = _interopRequire(require("core-js/library"));
_core.Symbol("test");
obj.constructor === Object;
obj.constructor === _core.Promise;
_core.Symbol();
_core.Symbol("test");
new _core.Map();

View File

@ -1 +0,0 @@
obj.constructor === Object;

View File

@ -1,9 +0,0 @@
"use strict";
var _interopRequire = function (obj) {
return obj && (obj["default"] || obj);
};
var _core = _interopRequire(require("core-js/library"));
obj.constructor === Object;

View File

@ -1,2 +0,0 @@
Symbol("test");
Symbol();