6to5-core
Advanced tools
Comparing version 2.13.3 to 2.13.4
@@ -172,10 +172,9 @@ "use strict"; | ||
var inits = 0; | ||
var noInits = 0; | ||
var hasInits = false; | ||
// don't add whitespace to loop heads | ||
if (!t.isFor(parent)) { | ||
for (var i = 0; i < node.declarations.length; i++) { | ||
if (node.declarations[i].init) { | ||
inits++; | ||
} else { | ||
noInits++; | ||
// has an init so let's split it up over multiple lines | ||
hasInits = true; | ||
} | ||
@@ -186,3 +185,3 @@ } | ||
var sep = ","; | ||
if (inits > noInits) { // more inits than no inits so let's add a newline | ||
if (hasInits) { | ||
sep += "\n" + util.repeat(node.kind.length + 1); | ||
@@ -189,0 +188,0 @@ } else { |
@@ -74,4 +74,4 @@ "use strict"; | ||
computedPropertyNames: require("./transformers/es6-computed-property-names"), | ||
defaultParameters: require("./transformers/es6-default-parameters"), | ||
destructuring: require("./transformers/es6-destructuring"), | ||
defaultParameters: require("./transformers/es6-default-parameters"), | ||
forOf: require("./transformers/es6-for-of"), | ||
@@ -102,2 +102,3 @@ unicodeRegex: require("./transformers/es6-unicode-regex"), | ||
undefinedToVoid: require("./transformers/optional-undefined-to-void"), | ||
undeclaredVariableCheck: require("./transformers/optional-undeclared-variable-check"), | ||
@@ -104,0 +105,0 @@ // spec |
@@ -18,5 +18,5 @@ "use strict"; | ||
var checkTDZ = function (ids) { | ||
var checkTDZ = function (param, def, ids) { | ||
var check = function (node, parent) { | ||
if (!t.isIdentifier(node) || !t.isReferenced(node, parent)) return; | ||
if (!t.isReferencedIdentifier(node, parent)) return; | ||
@@ -33,3 +33,6 @@ if (ids.indexOf(node.name) >= 0) { | ||
check(def, node); | ||
traverse(def, { enter: check }); | ||
if (!t.isPattern(param)) { | ||
traverse(def, { enter: check }); | ||
} | ||
}; | ||
@@ -47,3 +50,3 @@ | ||
for (var i2 = 0; i2 < rightIds.length; i2++) { | ||
checkTDZ(rightIds[i2]); | ||
checkTDZ(param, def, rightIds[i2]); | ||
} | ||
@@ -72,3 +75,3 @@ | ||
body.push(util.template("default-parameter", { | ||
var defNode = util.template("default-parameter", { | ||
VARIABLE_NAME: node.params[i], | ||
@@ -78,3 +81,5 @@ DEFAULT_VALUE: def, | ||
ARGUMENTS: argsIdentifier | ||
}, true)); | ||
}, true); | ||
defNode._blockHoist = node.defaults.length - i; | ||
body.push(defNode); | ||
} | ||
@@ -81,0 +86,0 @@ |
@@ -11,11 +11,25 @@ "use strict"; | ||
var node; | ||
if (op) { | ||
return t.expressionStatement(t.assignmentExpression(op, id, init)); | ||
node = t.expressionStatement(t.assignmentExpression(op, id, init)); | ||
} else { | ||
return t.variableDeclaration(opts.kind, [ | ||
node = t.variableDeclaration(opts.kind, [ | ||
t.variableDeclarator(id, init) | ||
]); | ||
} | ||
node._blockHoist = opts.blockHoist; | ||
return node; | ||
}; | ||
var buildVariableDeclar = function (opts, id, init) { | ||
var declar = t.variableDeclaration("var", [ | ||
t.variableDeclarator(id, init) | ||
]); | ||
declar._blockHoist = opts.blockHoist; | ||
return declar; | ||
}; | ||
var push = function (opts, nodes, elem, parentId) { | ||
@@ -104,5 +118,3 @@ if (t.isObjectPattern(elem)) { | ||
var _parentId = opts.scope.generateUidBasedOnNode(parentId, opts.file); | ||
nodes.push(t.variableDeclaration("var", [ | ||
t.variableDeclarator(_parentId, toArray) | ||
])); | ||
nodes.push(buildVariableDeclar(opts, _parentId, toArray)); | ||
parentId = _parentId; | ||
@@ -143,7 +155,3 @@ | ||
var key = scope.generateUidBasedOnNode(parentId, file); | ||
nodes.push(t.variableDeclaration("var", [ | ||
t.variableDeclarator(key, parentId) | ||
])); | ||
nodes.push(buildVariableDeclar(opts, key, parentId)); | ||
parentId = key; | ||
@@ -187,3 +195,3 @@ } | ||
node.params = node.params.map(function (pattern) { | ||
node.params = node.params.map(function (pattern, i) { | ||
if (!t.isPattern(pattern)) return pattern; | ||
@@ -195,8 +203,9 @@ | ||
pushPattern({ | ||
kind: "var", | ||
nodes: nodes, | ||
pattern: pattern, | ||
id: parentId, | ||
file: file, | ||
scope: scope | ||
blockHoist: node.params.length - i, | ||
pattern: pattern, | ||
nodes: nodes, | ||
scope: scope, | ||
file: file, | ||
kind: "var", | ||
id: parentId | ||
}); | ||
@@ -302,8 +311,8 @@ | ||
var opts = { | ||
pattern: pattern, | ||
nodes: nodes, | ||
scope: scope, | ||
kind: node.kind, | ||
nodes: nodes, | ||
pattern: pattern, | ||
file: file, | ||
id: patternId, | ||
file: file, | ||
scope: scope | ||
}; | ||
@@ -310,0 +319,0 @@ |
@@ -33,2 +33,5 @@ "use strict"; | ||
// todo: find out why this is necessary? #538 | ||
loop._scopeInfo = node._scopeInfo; | ||
return loop; | ||
@@ -35,0 +38,0 @@ }; |
@@ -120,5 +120,6 @@ "use strict"; | ||
LetScoping.prototype.remap = function () { | ||
var letRefs = this.letReferences; | ||
var scope = this.scope; | ||
var file = this.file; | ||
var hasRemaps = false; | ||
var letRefs = this.letReferences; | ||
var scope = this.scope; | ||
var file = this.file; | ||
@@ -140,2 +141,3 @@ // alright, so since we aren't wrapping this block in a closure | ||
hasRemaps = true; | ||
remaps[key] = remaps[uid] = { | ||
@@ -148,7 +150,8 @@ node: ref, | ||
if (!hasRemaps) return; | ||
// | ||
var replace = function (node, parent, scope, context, remaps) { | ||
if (!t.isIdentifier(node)) return; | ||
if (!t.isReferenced(node, parent)) return; | ||
if (!t.isReferencedIdentifier(node, parent)) return; | ||
@@ -272,7 +275,4 @@ var remap = remaps[node.name]; | ||
enter: function (node, parent) { | ||
// not an identifier so we have no use | ||
if (!t.isIdentifier(node)) return; | ||
// not a direct reference | ||
if (!t.isReferenced(node, parent)) return; | ||
if (!t.isReferencedIdentifier(node, parent)) return; | ||
@@ -279,0 +279,0 @@ // this scope has a variable with the same name so it couldn't belong |
@@ -19,4 +19,3 @@ var traverse = require("../../traverse"); | ||
enter: function (node, parent, scope, context, state) { | ||
if (!t.isIdentifier(node)) return; | ||
if (!t.isReferenced(node, parent)) return; | ||
if (!t.isReferencedIdentifier(node, parent)) return; | ||
@@ -23,0 +22,0 @@ var declared = state.letRefs[node.name]; |
@@ -45,3 +45,3 @@ "use strict"; | ||
} | ||
} else if (t.isIdentifier(node) && !t.isMemberExpression(parent) && t.isReferenced(node, parent) && _.contains(ALIASABLE_CONSTRUCTORS, node.name)) { | ||
} else if (t.isReferencedIdentifier(node, parent) && !t.isMemberExpression(parent) && _.contains(ALIASABLE_CONSTRUCTORS, node.name)) { | ||
// Symbol() -> _core.Symbol(); new Promise -> new _core.Promise | ||
@@ -48,0 +48,0 @@ return t.memberExpression(file._coreId, node); |
@@ -123,2 +123,3 @@ "use strict"; | ||
Scope.prototype.getInfo = function () { | ||
var parent = this.parent; | ||
var block = this.block; | ||
@@ -136,2 +137,6 @@ if (block._scopeInfo) return block._scopeInfo; | ||
if (parent && t.isBlockStatement(block) && t.isFor(parent.block)) { | ||
return info; | ||
} | ||
// ForStatement - left, init | ||
@@ -144,2 +149,6 @@ | ||
}); | ||
if (t.isBlockStatement(block.body)) { | ||
block = block.body; | ||
} | ||
} | ||
@@ -146,0 +155,0 @@ |
@@ -269,2 +269,14 @@ "use strict"; | ||
* | ||
* @param {Object} node | ||
* @param {Object} parent | ||
* @returns {Boolean} | ||
*/ | ||
t.isReferencedIdentifier = function (node, parent) { | ||
return t.isIdentifier(node) && t.isReferenced(node, parent); | ||
}; | ||
/** | ||
* Description | ||
* | ||
* @param {String} name | ||
@@ -479,3 +491,4 @@ * @returns {Boolean} | ||
Property: ["value"], | ||
ComprehensionBlock: ["left"] | ||
ComprehensionBlock: ["left"], | ||
AssignmentPattern: ["left"] | ||
}; | ||
@@ -482,0 +495,0 @@ |
{ | ||
"name": "6to5-core", | ||
"description": "Turn ES6 code into readable vanilla ES5 with source maps", | ||
"version": "2.13.3", | ||
"version": "2.13.4", | ||
"author": "Sebastian McKenzie <sebmck@gmail.com>", | ||
@@ -6,0 +6,0 @@ "homepage": "https://6to5.org/", |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
1760567
128
14700