diff --git a/lib/6to5/transformation/helpers/explode-assignable-expression.js b/lib/6to5/transformation/helpers/explode-assignable-expression.js index 9412f85390..6f3903574f 100644 --- a/lib/6to5/transformation/helpers/explode-assignable-expression.js +++ b/lib/6to5/transformation/helpers/explode-assignable-expression.js @@ -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) ])); diff --git a/lib/6to5/transformation/helpers/name-method.js b/lib/6to5/transformation/helpers/name-method.js index e49ed131e4..404de5c6a3 100644 --- a/lib/6to5/transformation/helpers/name-method.js +++ b/lib/6to5/transformation/helpers/name-method.js @@ -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; diff --git a/lib/6to5/transformation/transformers/_alias-functions.js b/lib/6to5/transformation/transformers/_alias-functions.js index 74cdd54637..b2bf435218 100644 --- a/lib/6to5/transformation/transformers/_alias-functions.js +++ b/lib/6to5/transformation/transformers/_alias-functions.js @@ -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); }; diff --git a/lib/6to5/transformation/transformers/es6/block-scoping.js b/lib/6to5/transformation/transformers/es6/block-scoping.js index 694920f7bf..ea41188360 100644 --- a/lib/6to5/transformation/transformers/es6/block-scoping.js +++ b/lib/6to5/transformation/transformers/es6/block-scoping.js @@ -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)])); diff --git a/lib/6to5/transformation/transformers/es6/classes.js b/lib/6to5/transformation/transformers/es6/classes.js index dd842f774a..8a9c5adfcf 100644 --- a/lib/6to5/transformation/transformers/es6/classes.js +++ b/lib/6to5/transformation/transformers/es6/classes.js @@ -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"); } diff --git a/lib/6to5/transformation/transformers/es6/destructuring.js b/lib/6to5/transformation/transformers/es6/destructuring.js index 22aad08b76..18e70db922 100644 --- a/lib/6to5/transformation/transformers/es6/destructuring.js +++ b/lib/6to5/transformation/transformers/es6/destructuring.js @@ -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 diff --git a/lib/6to5/transformation/transformers/es6/for-of.js b/lib/6to5/transformation/transformers/es6/for-of.js index abe0edd853..858434d256 100644 --- a/lib/6to5/transformation/transformers/es6/for-of.js +++ b/lib/6to5/transformation/transformers/es6/for-of.js @@ -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 }); diff --git a/lib/6to5/transformation/transformers/es6/parameters.rest.js b/lib/6to5/transformation/transformers/es6/parameters.rest.js index 3a2f226cb6..f9b7c2c79e 100644 --- a/lib/6to5/transformation/transformers/es6/parameters.rest.js +++ b/lib/6to5/transformation/transformers/es6/parameters.rest.js @@ -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", [ diff --git a/lib/6to5/transformation/transformers/es6/properties.computed.js b/lib/6to5/transformation/transformers/es6/properties.computed.js index e69916018f..cd01c828c4 100644 --- a/lib/6to5/transformation/transformers/es6/properties.computed.js +++ b/lib/6to5/transformation/transformers/es6/properties.computed.js @@ -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); // diff --git a/lib/6to5/transformation/transformers/es6/spread.js b/lib/6to5/transformation/transformers/es6/spread.js index 25077f9248..1c503cc2b5 100644 --- a/lib/6to5/transformation/transformers/es6/spread.js +++ b/lib/6to5/transformation/transformers/es6/spread.js @@ -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; diff --git a/lib/6to5/transformation/transformers/es7/abstract-references.js b/lib/6to5/transformation/transformers/es7/abstract-references.js index a8ce0c1bd1..12819f7a1b 100644 --- a/lib/6to5/transformation/transformers/es7/abstract-references.js +++ b/lib/6to5/transformation/transformers/es7/abstract-references.js @@ -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, diff --git a/lib/6to5/transformation/transformers/optional/proto-to-assign.js b/lib/6to5/transformation/transformers/optional/proto-to-assign.js index a9aaf62090..ecf6b4d113 100644 --- a/lib/6to5/transformation/transformers/optional/proto-to-assign.js +++ b/lib/6to5/transformation/transformers/optional/proto-to-assign.js @@ -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)); diff --git a/lib/6to5/transformation/transformers/playground/method-binding.js b/lib/6to5/transformation/transformers/playground/method-binding.js index f875dbc53c..a94cd42319 100644 --- a/lib/6to5/transformation/transformers/playground/method-binding.js +++ b/lib/6to5/transformation/transformers/playground/method-binding.js @@ -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)) ])); diff --git a/lib/6to5/traverse/scope.js b/lib/6to5/traverse/scope.js index ddf685e412..f7022ec89d 100644 --- a/lib/6to5/traverse/scope.js +++ b/lib/6to5/traverse/scope.js @@ -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