hardcode aliasArguments
This commit is contained in:
parent
fae60291b3
commit
aa7c9488b0
@ -2,7 +2,7 @@ var traverse = require("../traverse");
|
||||
var util = require("../util");
|
||||
var b = require("ast-types").builders;
|
||||
|
||||
exports.ArrowFunctionExpression = function (node) {
|
||||
exports.ArrowFunctionExpression = function (node, parent, file) {
|
||||
util.ensureBlock(node);
|
||||
|
||||
node.expression = false;
|
||||
@ -18,16 +18,33 @@ exports.ArrowFunctionExpression = function (node) {
|
||||
};
|
||||
|
||||
exports.FunctionDeclaration =
|
||||
exports.FunctionExpression = function (node, parent, opts, generateUid) {
|
||||
exports.FunctionExpression = function (node, parent, file) {
|
||||
var argumentsId;
|
||||
|
||||
// traverse the function and find all arrow functions
|
||||
var isArgumentIdentifier = function (node) {
|
||||
return node.type === "Identifier" && node.name === "arguments";
|
||||
};
|
||||
|
||||
var getId = function () {
|
||||
return argumentsId = argumentsId || b.identifier(file.generateUid("arguments"));
|
||||
};
|
||||
|
||||
// traverse the function and find all arrow functions so we can alias
|
||||
// arguments if neccesary
|
||||
traverse(node, function (node) {
|
||||
if (node.type !== "ArrowFunctionExpression") return;
|
||||
|
||||
// traverse all child nodes of this arrow function and find a sole arguments
|
||||
// identifier
|
||||
argumentsId = util.aliasArguments(generateUid, node, argumentsId);
|
||||
traverse(node, function (node, parent) {
|
||||
if (isArgumentIdentifier(node) && parent.type !== "MemberExpression") {
|
||||
return getId();
|
||||
} else if (node.type === "MemberExpression" && isArgumentIdentifier(node.object)) {
|
||||
node.object = getId();
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
}, traverse.FUNCTION_TYPES);
|
||||
|
||||
return false;
|
||||
}, ["FunctionDeclaration", "FunctionExpression"]);
|
||||
|
||||
@ -59,19 +59,6 @@ exports.canCompile = function (filename) {
|
||||
return _.contains([".js", ".es6", ".jsx"], ext);
|
||||
};
|
||||
|
||||
exports.buildUidGenerator = function () {
|
||||
var ids = {};
|
||||
|
||||
return function (name) {
|
||||
var i = ids[name] || 1;
|
||||
|
||||
var id = "_" + name;
|
||||
if (i > 1) id += i;
|
||||
ids[name] = i + 1;
|
||||
return id;
|
||||
};
|
||||
};
|
||||
|
||||
exports.sourceMapToComment = function (map) {
|
||||
var json = JSON.stringify(map);
|
||||
var base64 = new Buffer(json).toString("base64");
|
||||
@ -212,28 +199,6 @@ exports.parse = function (opts, code, callback) {
|
||||
}
|
||||
};
|
||||
|
||||
exports.aliasArguments = function (generateUid, node, id) {
|
||||
var isArgumentIdentifier = function (node) {
|
||||
return node.type === "Identifier" && node.name === "arguments";
|
||||
};
|
||||
|
||||
var getId = function () {
|
||||
return id = id || b.identifier(generateUid("arguments"));
|
||||
};
|
||||
|
||||
traverse(node, function (node, parent) {
|
||||
if (isArgumentIdentifier(node) && parent.type !== "MemberExpression") {
|
||||
return getId();
|
||||
} else if (node.type === "MemberExpression" && isArgumentIdentifier(node.object)) {
|
||||
node.object = getId();
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
}, traverse.FUNCTION_TYPES);
|
||||
|
||||
return id;
|
||||
};
|
||||
|
||||
try {
|
||||
exports.templates = require("../../templates.json");
|
||||
} catch (err) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user