From 0627cd94d4d653fa04f254c4cdff8892e17a3f70 Mon Sep 17 00:00:00 2001 From: Sebastian McKenzie Date: Fri, 16 Jan 2015 02:25:41 +1100 Subject: [PATCH] turn array for ins into fors --- lib/6to5/generation/generators/statements.js | 2 +- lib/6to5/transformation/modules/_default.js | 4 ++-- lib/6to5/transformation/transform.js | 2 +- .../transformation/transformers/_block-hoist.js | 2 +- .../transformation/transformers/_declarations.js | 2 ++ .../transformation/transformers/es6-classes.js | 2 +- .../transformers/es6-computed-property-names.js | 10 +++++----- .../transformation/transformers/es6-constants.js | 2 +- .../transformers/es6-default-parameters.js | 6 +++--- .../transformers/es6-destructuring.js | 14 +++++++------- .../transformation/transformers/es6-let-scoping.js | 6 +++--- .../transformation/transformers/es6-modules.js | 4 ++-- lib/6to5/transformation/transformers/es6-spread.js | 4 ++-- .../transformers/es6-template-literals.js | 6 +++--- .../transformers/es7-object-spread.js | 4 ++-- .../transformers/optional-proto-to-assign.js | 2 +- lib/6to5/transformation/transformers/react.js | 12 ++++++------ lib/6to5/types/index.js | 4 ++-- 18 files changed, 45 insertions(+), 43 deletions(-) diff --git a/lib/6to5/generation/generators/statements.js b/lib/6to5/generation/generators/statements.js index f3a6babeab..087f37fbc7 100644 --- a/lib/6to5/generation/generators/statements.js +++ b/lib/6to5/generation/generators/statements.js @@ -169,7 +169,7 @@ exports.VariableDeclaration = function (node, print, parent) { var inits = 0; var noInits = 0; - for (var i in node.declarations) { + for (var i = 0; i < node.declarations.length; i++) { if (node.declarations[i].init) { inits++; } else { diff --git a/lib/6to5/transformation/modules/_default.js b/lib/6to5/transformation/modules/_default.js index 5e8ceb12a7..42e377b3a8 100644 --- a/lib/6to5/transformation/modules/_default.js +++ b/lib/6to5/transformation/modules/_default.js @@ -244,13 +244,13 @@ DefaultFormatter.prototype.exportDeclaration = function (node, nodes) { var assign; if (t.isVariableDeclaration(declar)) { - for (var i in declar.declarations) { + for (var i = 0; i < declar.declarations.length; i++) { var decl = declar.declarations[i]; decl.init = this._exportsAssign(decl.id, decl.init, node).expression; var newDeclar = t.variableDeclaration(declar.kind, [decl]); - if (i === "0") t.inherits(newDeclar, declar); + if (i === 0) t.inherits(newDeclar, declar); nodes.push(newDeclar); } } else { diff --git a/lib/6to5/transformation/transform.js b/lib/6to5/transformation/transform.js index a3399e7b97..351fe6e7d8 100644 --- a/lib/6to5/transformation/transform.js +++ b/lib/6to5/transformation/transform.js @@ -20,7 +20,7 @@ transform.fromAst = function (ast, code, opts) { }; transform._ensureTransformerNames = function (type, keys) { - for (var i in keys) { + for (var i = 0; i < keys.length; i++) { var key = keys[i]; if (!_.has(transform.transformers, key)) { throw new ReferenceError("unknown transformer " + key + " specified in " + type); diff --git a/lib/6to5/transformation/transformers/_block-hoist.js b/lib/6to5/transformation/transformers/_block-hoist.js index 048ea908c4..cc17209797 100644 --- a/lib/6to5/transformation/transformers/_block-hoist.js +++ b/lib/6to5/transformation/transformers/_block-hoist.js @@ -12,7 +12,7 @@ exports.BlockStatement = exports.Program = { exit: function (node) { var hasChange = false; - for (var i in node.body) { + for (var i = 0; i < node.body.length; i++) { var bodyNode = node.body[i]; if (bodyNode && bodyNode._blockHoist != null) hasChange = true; } diff --git a/lib/6to5/transformation/transformers/_declarations.js b/lib/6to5/transformation/transformers/_declarations.js index e2b6c299b2..61852930b6 100644 --- a/lib/6to5/transformation/transformers/_declarations.js +++ b/lib/6to5/transformation/transformers/_declarations.js @@ -5,6 +5,8 @@ exports.secondPass = true; exports.BlockStatement = exports.Program = function (node) { + if (!node._declarations) return; + var kinds = {}; var kind; diff --git a/lib/6to5/transformation/transformers/es6-classes.js b/lib/6to5/transformation/transformers/es6-classes.js index 3b5b137cfa..dc079ca164 100644 --- a/lib/6to5/transformation/transformers/es6-classes.js +++ b/lib/6to5/transformation/transformers/es6-classes.js @@ -132,7 +132,7 @@ Class.prototype.buildBody = function () { var classBody = this.node.body.body; var body = this.body; - for (var i in classBody) { + for (var i = 0; i < classBody.length; i++) { var node = classBody[i]; if (t.isMethodDefinition(node)) { this.replaceSuperReferences(node); diff --git a/lib/6to5/transformation/transformers/es6-computed-property-names.js b/lib/6to5/transformation/transformers/es6-computed-property-names.js index 94d4bd9e86..dcfff3b827 100644 --- a/lib/6to5/transformation/transformers/es6-computed-property-names.js +++ b/lib/6to5/transformation/transformers/es6-computed-property-names.js @@ -3,7 +3,7 @@ var t = require("../../types"); exports.ObjectExpression = function (node, parent, file, scope) { var hasComputed = false; - for (var i in node.properties) { + for (var i = 0; i < node.properties.length; i++) { hasComputed = t.isProperty(node.properties[i], { computed: true, kind: "init" }); if (hasComputed) break; } @@ -39,7 +39,7 @@ exports.ObjectExpression = function (node, parent, file, scope) { }; var loose = function (node, body, objId) { - for (var i in node.properties) { + for (var i = 0; i < node.properties.length; i++) { var prop = node.properties[i]; body.push(t.expressionStatement( @@ -58,7 +58,7 @@ var spec = function (node, body, objId, initProps, file) { // normalise key - for (var i in props) { + for (var i = 0; i < props.length; i++) { prop = props[i]; if (prop.kind !== "init") continue; @@ -73,7 +73,7 @@ var spec = function (node, body, objId, initProps, file) { var broken = false; - for (i in props) { + for (i = 0; i < props.length; i++) { prop = props[i]; if (prop.computed) { @@ -89,7 +89,7 @@ var spec = function (node, body, objId, initProps, file) { // add a simple assignment for all Symbol member expressions due to symbol polyfill limitations // otherwise use Object.defineProperty - for (i in props) { + for (i = 0; i < props.length; i++) { prop = props[i]; if (!prop) continue; diff --git a/lib/6to5/transformation/transformers/es6-constants.js b/lib/6to5/transformation/transformers/es6-constants.js index a3021188fb..dc8e0ce49e 100644 --- a/lib/6to5/transformation/transformers/es6-constants.js +++ b/lib/6to5/transformation/transformers/es6-constants.js @@ -44,7 +44,7 @@ exports.ForStatement = function (node, parent, file) { } if (t.isVariableDeclaration(child, { kind: "const" })) { - for (var i in child.declarations) { + for (var i = 0; i < child.declarations.length; i++) { var declar = child.declarations[i]; var ids = getIds(declar); diff --git a/lib/6to5/transformation/transformers/es6-default-parameters.js b/lib/6to5/transformation/transformers/es6-default-parameters.js index 674c1096dc..ac7a41ff38 100644 --- a/lib/6to5/transformation/transformers/es6-default-parameters.js +++ b/lib/6to5/transformation/transformers/es6-default-parameters.js @@ -31,7 +31,7 @@ exports.Function = function (node, parent, file, scope) { traverse(def, { enter: check }); }; - for (i in node.defaults) { + for (i = 0; i < node.defaults.length; i++) { def = node.defaults[i]; if (!def) continue; @@ -40,7 +40,7 @@ exports.Function = function (node, parent, file, scope) { // temporal dead zone check - here we prevent accessing of params that // are to the right - ie. uninitialized parameters var rightIds = ids.slice(i); - for (i in rightIds) { + for (i = 0; i < rightIds.length; i++) { checkTDZ(rightIds[i]); } @@ -58,7 +58,7 @@ exports.Function = function (node, parent, file, scope) { var lastNonDefaultParam = 0; - for (i in node.defaults) { + for (i = 0; i < node.defaults.length; i++) { def = node.defaults[i]; if (!def) { lastNonDefaultParam = +i + 1; diff --git a/lib/6to5/transformation/transformers/es6-destructuring.js b/lib/6to5/transformation/transformers/es6-destructuring.js index e92e3194a5..22d016b38f 100644 --- a/lib/6to5/transformation/transformers/es6-destructuring.js +++ b/lib/6to5/transformation/transformers/es6-destructuring.js @@ -46,12 +46,12 @@ var pushAssignmentPattern = function (opts, nodes, pattern, parentId) { }; var pushObjectPattern = function (opts, nodes, pattern, parentId) { - for (var i in pattern.properties) { + for (var i = 0; i < pattern.properties.length; i++) { var prop = pattern.properties[i]; if (t.isSpreadProperty(prop)) { // get all the keys that appear in this object before the current spread var keys = []; - for (var i2 in pattern.properties) { + for (var i2 = 0; i2 < pattern.properties.length; i2++) { var prop2 = pattern.properties[i2]; if (i2 >= i) break; @@ -88,7 +88,7 @@ var pushArrayPattern = function (opts, nodes, pattern, parentId) { var i; var hasSpreadElement = false; - for (i in pattern.elements) { + for (i = 0; i < pattern.elements.length; i++) { if (t.isSpreadElement(pattern.elements[i])) { hasSpreadElement = true; break; @@ -103,7 +103,7 @@ var pushArrayPattern = function (opts, nodes, pattern, parentId) { ])); parentId = _parentId; - for (i in pattern.elements) { + for (i = 0; i < pattern.elements.length; i++) { var elem = pattern.elements[i]; if (!elem) continue; @@ -278,7 +278,7 @@ exports.VariableDeclaration = function (node, parent, file, scope) { var declar; var hasPattern = false; - for (i in node.declarations) { + for (i = 0; i < node.declarations.length; i++) { declar = node.declarations[i]; if (t.isPattern(declar.id)) { hasPattern = true; @@ -287,7 +287,7 @@ exports.VariableDeclaration = function (node, parent, file, scope) { } if (!hasPattern) return; - for (i in node.declarations) { + for (i = 0; i < node.declarations.length; i++) { declar = node.declarations[i]; var patternId = declar.init; @@ -317,7 +317,7 @@ exports.VariableDeclaration = function (node, parent, file, scope) { if (!t.isProgram(parent) && !t.isBlockStatement(parent)) { declar = null; - for (i in nodes) { + for (i = 0; i < nodes.length; i++) { node = nodes[i]; declar = declar || t.variableDeclaration(node.kind, []); diff --git a/lib/6to5/transformation/transformers/es6-let-scoping.js b/lib/6to5/transformation/transformers/es6-let-scoping.js index a95c1b3a30..40aa3b3a73 100644 --- a/lib/6to5/transformation/transformers/es6-let-scoping.js +++ b/lib/6to5/transformation/transformers/es6-let-scoping.js @@ -25,7 +25,7 @@ var isVar = function (node, parent) { }; var standardiseLets = function (declars) { - for (var i in declars) { + for (var i = 0; i < declars.length; i++) { delete declars[i]._let; } }; @@ -246,7 +246,7 @@ LetScoping.prototype.getInfo = function () { opts.keys = opts.keys.concat(keys); } - for (i in block.body) { + for (i = 0; i < block.body.length; i++) { declar = block.body[i]; if (!isLet(declar, block)) continue; @@ -412,7 +412,7 @@ LetScoping.prototype.pushDeclar = function (node) { var replace = []; - for (var i in node.declarations) { + for (var i = 0; i < node.declarations.length; i++) { var declar = node.declarations[i]; if (!declar.init) continue; diff --git a/lib/6to5/transformation/transformers/es6-modules.js b/lib/6to5/transformation/transformers/es6-modules.js index b8c1b4964c..9d9631095b 100644 --- a/lib/6to5/transformation/transformers/es6-modules.js +++ b/lib/6to5/transformation/transformers/es6-modules.js @@ -10,7 +10,7 @@ exports.ImportDeclaration = function (node, parent, file) { var nodes = []; if (node.specifiers.length) { - for (var i in node.specifiers) { + for (var i = 0; i < node.specifiers.length; i++) { file.moduleFormatter.importSpecifier(node.specifiers[i], node, nodes, parent); } } else { @@ -39,7 +39,7 @@ exports.ExportDeclaration = function (node, parent, file) { file.moduleFormatter.exportDeclaration(node, nodes, parent); } else { - for (var i in node.specifiers) { + for (var i = 0; i < node.specifiers.length; i++) { file.moduleFormatter.exportSpecifier(node.specifiers[i], node, nodes, parent); } } diff --git a/lib/6to5/transformation/transformers/es6-spread.js b/lib/6to5/transformation/transformers/es6-spread.js index 5a7b031ce1..8547bfa550 100644 --- a/lib/6to5/transformation/transformers/es6-spread.js +++ b/lib/6to5/transformation/transformers/es6-spread.js @@ -6,7 +6,7 @@ var getSpreadLiteral = function (spread, file) { }; var hasSpread = function (nodes) { - for (var i in nodes) { + for (var i = 0; i < nodes.length; i++) { if (t.isSpreadElement(nodes[i])) { return true; } @@ -25,7 +25,7 @@ var build = function (props, file) { _props = []; }; - for (var i in props) { + for (var i = 0; i < props.length; i++) { var prop = props[i]; if (t.isSpreadElement(prop)) { push(); diff --git a/lib/6to5/transformation/transformers/es6-template-literals.js b/lib/6to5/transformation/transformers/es6-template-literals.js index 5e4f824cf3..8ad54914f7 100644 --- a/lib/6to5/transformation/transformers/es6-template-literals.js +++ b/lib/6to5/transformation/transformers/es6-template-literals.js @@ -11,7 +11,7 @@ exports.TaggedTemplateExpression = function (node, parent, file) { var strings = []; var raw = []; - for (var i in quasi.quasis) { + for (var i = 0; i < quasi.quasis.length; i++) { var elem = quasi.quasis[i]; strings.push(t.literal(elem.value.cooked)); raw.push(t.literal(elem.value.raw)); @@ -33,7 +33,7 @@ exports.TemplateLiteral = function (node) { var nodes = []; var i; - for (i in node.quasis) { + for (i = 0; i < node.quasis.length; i++) { var elem = node.quasis[i]; nodes.push(t.literal(elem.value.cooked)); @@ -49,7 +49,7 @@ exports.TemplateLiteral = function (node) { var root = buildBinaryExpression(nodes.shift(), nodes.shift()); - for (i in nodes) { + for (i = 0; i < nodes.length; i++) { root = buildBinaryExpression(root, nodes[i]); } diff --git a/lib/6to5/transformation/transformers/es7-object-spread.js b/lib/6to5/transformation/transformers/es7-object-spread.js index 81156bfb1f..a9ffecaf03 100644 --- a/lib/6to5/transformation/transformers/es7-object-spread.js +++ b/lib/6to5/transformation/transformers/es7-object-spread.js @@ -8,7 +8,7 @@ exports.ObjectExpression = function (node, parent, file) { var hasSpread = false; var i; var prop; - for (i in node.properties) { + for (i = 0; i < node.properties.length; i++) { prop = node.properties[i]; if (t.isSpreadProperty(prop)) { hasSpread = true; @@ -26,7 +26,7 @@ exports.ObjectExpression = function (node, parent, file) { props = []; }; - for (i in node.properties) { + for (i = 0; i < node.properties.length; i++) { prop = node.properties[i]; if (t.isSpreadProperty(prop)) { push(); diff --git a/lib/6to5/transformation/transformers/optional-proto-to-assign.js b/lib/6to5/transformation/transformers/optional-proto-to-assign.js index b2682d1802..e3f0a78022 100644 --- a/lib/6to5/transformation/transformers/optional-proto-to-assign.js +++ b/lib/6to5/transformation/transformers/optional-proto-to-assign.js @@ -44,7 +44,7 @@ exports.ExpressionStatement = function (node, parent, file) { exports.ObjectExpression = function (node, parent, file) { var proto; - for (var i in node.properties) { + for (var i = 0; i < node.properties.length; i++) { var prop = node.properties[i]; if (isProtoKey(prop)) { diff --git a/lib/6to5/transformation/transformers/react.js b/lib/6to5/transformation/transformers/react.js index 341d6b1492..37fafeb457 100644 --- a/lib/6to5/transformation/transformers/react.js +++ b/lib/6to5/transformation/transformers/react.js @@ -136,17 +136,17 @@ exports.XJSElement = { var callExpr = node.openingElement; var i; - for (i in node.children) { + for (i = 0; i < node.children.length; i++) { var child = node.children[i]; if (t.isLiteral(child) && _.isString(child.value)) { var lines = child.value.split(/\r\n|\n|\r/); - for (i in lines) { - var line = lines[i]; + for (i2 = 0; i2 < lines.length; i2++) { + var line = lines[i2]; - var isFirstLine = i === "0"; - var isLastLine = +i === lines.length - 1; + var isFirstLine = i2 === 0; + var isLastLine = i2 === lines.length - 1; // replace rendered whitespace tabs with spaces var trimmedLine = line.replace(/\t/g, " "); @@ -209,7 +209,7 @@ var addDisplayName = function (id, call) { var props = first.properties; var safe = true; - for (var i in props) { + for (var i = 0; i < props.length; i++) { prop = props[i]; if (t.isIdentifier(prop.key, { name: "displayName" })) { safe = false; diff --git a/lib/6to5/types/index.js b/lib/6to5/types/index.js index a969003eaf..2891d2df82 100644 --- a/lib/6to5/types/index.js +++ b/lib/6to5/types/index.js @@ -440,7 +440,7 @@ t.getIds = function (node, map, ignoreTypes) { if (t.isIdentifier(id)) { ids[id.name] = id; } else if (nodeKeys) { - for (i in nodeKeys) { + for (i = 0; i < nodeKeys.length; i++) { key = nodeKeys[i]; if (id[key]) { search.push(id[key]); @@ -448,7 +448,7 @@ t.getIds = function (node, map, ignoreTypes) { } } } else if (arrKeys) { - for (i in arrKeys) { + for (i = 0; i < arrKeys.length; i++) { key = arrKeys[i]; search = search.concat(id[key] || []); }