add scope file.generateUidIdentifier alias

This commit is contained in:
Sebastian McKenzie
2015-01-21 23:58:43 +11:00
parent 3205c78f01
commit 287bfc77b2
14 changed files with 48 additions and 41 deletions

View File

@@ -12,7 +12,7 @@ var getObjRef = function (node, nodes, file, scope) {
throw new Error("We can't explode this node type " + node.type);
}
var temp = scope.generateUidBasedOnNode(ref, file);
var temp = scope.generateUidBasedOnNode(ref);
nodes.push(t.variableDeclaration("var", [
t.variableDeclarator(temp, ref)
]));
@@ -24,7 +24,7 @@ var getPropRef = function (node, nodes, file, scope) {
var key = t.toComputedKey(node, prop);
if (t.isLiteral(key)) return key;
var temp = scope.generateUidBasedOnNode(prop, file);
var temp = scope.generateUidBasedOnNode(prop);
nodes.push(t.variableDeclaration("var", [
t.variableDeclarator(temp, prop)
]));

View File

@@ -42,8 +42,8 @@ exports.property = function (node, file, scope) {
node.value = util.template("property-method-assignment-wrapper", {
FUNCTION: node.value,
FUNCTION_ID: key,
FUNCTION_KEY: file.generateUidIdentifier(id, scope),
WRAPPER_KEY: file.generateUidIdentifier(id + "Wrapper", scope)
FUNCTION_KEY: scope.generateUidIdentifier(id),
WRAPPER_KEY: scope.generateUidIdentifier(id + "Wrapper")
});
} else {
node.value.id = key;

View File

@@ -43,16 +43,16 @@ var functionTraverser = {
}
};
var go = function (getBody, node, file, scope) {
var go = function (getBody, node, scope) {
var argumentsId;
var thisId;
var state = {
getArgumentsId: function () {
return argumentsId = argumentsId || file.generateUidIdentifier("arguments", scope);
return argumentsId = argumentsId || scope.generateUidIdentifier("arguments");
},
getThisId: function () {
return thisId = thisId || file.generateUidIdentifier("this", scope);
return thisId = thisId || scope.generateUidIdentifier("this");
}
};
@@ -81,7 +81,7 @@ var go = function (getBody, node, file, scope) {
exports.Program = function (node, parent, scope, context, file) {
go(function () {
return node.body;
}, node, file, scope);
}, node, scope);
};
exports.FunctionDeclaration =
@@ -89,5 +89,5 @@ exports.FunctionExpression = function (node, parent, scope, context, file) {
go(function () {
t.ensureBlock(node);
return node.body.body;
}, node, file, scope);
}, node, scope);
};

View File

@@ -159,7 +159,7 @@ LetScoping.prototype.remap = function () {
var ref = letRefs[key];
if (scope.parentHas(key)) {
var uid = file.generateUidIdentifier(ref.name, scope).name;
var uid = scope.generateUidIdentifier(ref.name).name;
ref.name = uid;
hasRemaps = true;
@@ -210,7 +210,7 @@ LetScoping.prototype.needsClosure = function () {
// build a call and a unique id that we can assign the return value to
var call = t.callExpression(fn, params);
var ret = this.file.generateUidIdentifier("ret", this.scope);
var ret = this.scope.generateUidIdentifier("ret");
var hasYield = traverse.hasType(fn.body, this.scope, "YieldExpression", t.FUNCTION_TYPES);
if (hasYield) {
@@ -447,7 +447,7 @@ LetScoping.prototype.buildHas = function (ret, call) {
if (has.hasBreak || has.hasContinue) {
// ensure that the parent has a label as we're building a switch and we
// need to be able to access it
var label = loopParent.label = loopParent.label || this.file.generateUidIdentifier("loop", this.scope);
var label = loopParent.label = loopParent.label || this.scope.generateUidIdentifier("loop");
if (has.hasBreak) {
cases.push(t.switchCase(t.literal("break"), [t.breakStatement(label)]));

View File

@@ -46,7 +46,7 @@ function Class(node, file, scope, isStatement) {
this.instanceMutatorMap = {};
this.staticMutatorMap = {};
this.hasConstructor = false;
this.className = node.id || file.generateUidIdentifier("class", scope);
this.className = node.id || scope.generateUidIdentifier("class");
this.superName = node.superClass;
this.isLoose = file.isLoose("es6.classes");
}

View File

@@ -149,7 +149,7 @@ var pushPattern = function (opts) {
var scope = opts.scope;
if (!t.isArrayExpression(parentId) && !t.isMemberExpression(parentId) && !t.isIdentifier(parentId)) {
var key = scope.generateUidBasedOnNode(parentId, file);
var key = scope.generateUidBasedOnNode(parentId);
nodes.push(buildVariableDeclar(opts, key, parentId));
parentId = key;
}
@@ -165,7 +165,7 @@ exports.ForOfStatement = function (node, parent, scope, context, file) {
var pattern = declar.declarations[0].id;
if (!t.isPattern(pattern)) return;
var key = file.generateUidIdentifier("ref", scope);
var key = scope.generateUidIdentifier("ref");
node.left = t.variableDeclaration(declar.kind, [
t.variableDeclarator(key, null)
]);
@@ -193,7 +193,7 @@ exports.Function = function (node, parent, scope, context, file) {
if (!t.isPattern(pattern)) return pattern;
hasDestructuring = true;
var parentId = file.generateUidIdentifier("ref", scope);
var parentId = scope.generateUidIdentifier("ref");
pushPattern({
blockHoist: node.params.length - i,
@@ -220,7 +220,7 @@ exports.CatchClause = function (node, parent, scope, context, file) {
var pattern = node.param;
if (!t.isPattern(pattern)) return;
var ref = file.generateUidIdentifier("ref", scope);
var ref = scope.generateUidIdentifier("ref");
node.param = ref;
var nodes = [];
@@ -242,7 +242,7 @@ exports.ExpressionStatement = function (node, parent, scope, context, file) {
var nodes = [];
var ref = file.generateUidIdentifier("ref", scope);
var ref = scope.generateUidIdentifier("ref");
nodes.push(t.variableDeclaration("var", [
t.variableDeclarator(ref, expr.right)
]));
@@ -260,7 +260,7 @@ exports.AssignmentExpression = function (node, parent, scope, context, file) {
if (parent.type === "ExpressionStatement") return;
if (!t.isPattern(node.left)) return;
var ref = file.generateUidIdentifier("temp", scope);
var ref = scope.generateUidIdentifier("temp");
scope.push({
key: ref.name,
id: ref

View File

@@ -54,10 +54,10 @@ var loose = function (node, parent, scope, context, file) {
}
var loop = util.template("for-of-loose", {
LOOP_OBJECT: file.generateUidIdentifier("iterator", scope),
IS_ARRAY: file.generateUidIdentifier("isArray", scope),
LOOP_OBJECT: scope.generateUidIdentifier("iterator"),
IS_ARRAY: scope.generateUidIdentifier("isArray"),
OBJECT: node.right,
INDEX: file.generateUidIdentifier("i", scope),
INDEX: scope.generateUidIdentifier("i"),
ID: id
});
@@ -72,7 +72,7 @@ var spec = function (node, parent, scope, context, file) {
var left = node.left;
var declar;
var stepKey = file.generateUidIdentifier("step", scope);
var stepKey = scope.generateUidIdentifier("step");
var stepValue = t.memberExpression(stepKey, t.identifier("value"));
if (t.isIdentifier(left) || t.isPattern(left)) {
@@ -88,7 +88,7 @@ var spec = function (node, parent, scope, context, file) {
}
var loop = util.template("for-of", {
ITERATOR_KEY: file.generateUidIdentifier("iterator", scope),
ITERATOR_KEY: scope.generateUidIdentifier("iterator"),
STEP_KEY: stepKey,
OBJECT: node.right
});

View File

@@ -17,8 +17,8 @@ exports.Function = function (node, parent, scope, context, file) {
argsId._ignoreAliasFunctions = true;
var start = t.literal(node.params.length);
var key = file.generateUidIdentifier("key");
var len = file.generateUidIdentifier("len");
var key = scope.generateUidIdentifier("key");
var len = scope.generateUidIdentifier("len");
var arrKey = key;
var arrLen = len;
@@ -44,7 +44,7 @@ exports.Function = function (node, parent, scope, context, file) {
// support patterns
if (t.isPattern(rest)) {
var pattern = rest;
rest = file.generateUidIdentifier("ref", scope);
rest = scope.generateUidIdentifier("ref");
// let the destructuring transformer handle this
var restDeclar = t.variableDeclaration("var", [

View File

@@ -13,7 +13,7 @@ exports.ObjectExpression = function (node, parent, scope, context, file) {
if (!hasComputed) return;
var initProps = [];
var objId = scope.generateUidBasedOnNode(parent, file);
var objId = scope.generateUidBasedOnNode(parent);
//

View File

@@ -82,7 +82,7 @@ exports.CallExpression = function (node, parent, scope, context, file) {
var callee = node.callee;
if (t.isMemberExpression(callee)) {
var temp = scope.generateTempBasedOnNode(callee.object, file);
var temp = scope.generateTempBasedOnNode(callee.object);
if (temp) {
callee.object = t.assignmentExpression("=", temp, callee.object);
contextLiteral = temp;

View File

@@ -32,7 +32,7 @@ exports.AssignmentExpression = function (node, parent, scope, context, file) {
// we need to return `node.right`
if (!t.isExpressionStatement(parent)) {
temp = scope.generateTempBasedOnNode(node.right, file);
temp = scope.generateTempBasedOnNode(node.right);
if (temp) value = temp;
}
@@ -80,7 +80,7 @@ exports.CallExpression = function (node, parent, scope, context, file) {
var callee = node.callee;
if (!t.isVirtualPropertyExpression(callee)) return;
var temp = scope.generateTempBasedOnNode(callee.object, file);
var temp = scope.generateTempBasedOnNode(callee.object);
var call = util.template("abstract-expression-call", {
PROPERTY: callee.property,

View File

@@ -25,7 +25,7 @@ exports.AssignmentExpression = function (node, parent, scope, context, file) {
var nodes = [];
var left = node.left.object;
var temp = scope.generateTempBasedOnNode(node.left.object, file);
var temp = scope.generateTempBasedOnNode(node.left.object);
nodes.push(t.expressionStatement(t.assignmentExpression("=", temp, left)));
nodes.push(buildDefaultsCallExpression(node, temp, file));

View File

@@ -6,7 +6,7 @@ exports.BindMemberExpression = function (node, parent, scope, context, file) {
var object = node.object;
var prop = node.property;
var temp = scope.generateTempBasedOnNode(node.object, file);
var temp = scope.generateTempBasedOnNode(node.object);
if (temp) object = temp;
var call = t.callExpression(
@@ -26,7 +26,7 @@ exports.BindMemberExpression = function (node, parent, scope, context, file) {
exports.BindFunctionExpression = function (node, parent, scope, context, file) {
var buildCall = function (args) {
var param = file.generateUidIdentifier("val", scope);
var param = scope.generateUidIdentifier("val");
return t.functionExpression(null, [param], t.blockStatement([
t.returnStatement(t.callExpression(t.memberExpression(param, node.callee), args))
]));

View File

@@ -57,16 +57,24 @@ Scope.prototype.generateTemp = function (file, name) {
return id;
};
/**
* Description
*
* @param {String} name
*/
Scope.prototype.generateUidIdentifier = function (name) {
return this.file.generateUidIdentifier(name, this);
};
/*
* Description
*
* @param {Object} parent
* @param {File} file
* @param {Scope} scope
* @returns {Object}
*/
Scope.prototype.generateUidBasedOnNode = function (parent, file) {
Scope.prototype.generateUidBasedOnNode = function (parent) {
var node = parent;
if (t.isAssignmentExpression(parent)) {
@@ -97,23 +105,22 @@ Scope.prototype.generateUidBasedOnNode = function (parent, file) {
var id = parts.join("$");
id = id.replace(/^_/, "") || "ref";
return file.generateUidIdentifier(id, this);
return this.file.generateUidIdentifier(id, this);
};
/**
* Description
*
* @param {Object} node
* @param {File} file
* @returns {Object}
*/
Scope.prototype.generateTempBasedOnNode = function (node, file) {
Scope.prototype.generateTempBasedOnNode = function (node) {
if (t.isIdentifier(node) && this.has(node.name, true)) {
return null;
}
var id = this.generateUidBasedOnNode(node, file);
var id = this.generateUidBasedOnNode(node);
this.push({
key: id.name,
id: id