diff --git a/.babelrc b/.babelrc index f9a07bc9ff..e7a4ea8497 100644 --- a/.babelrc +++ b/.babelrc @@ -1,5 +1,6 @@ { "stage": 0, "loose": ["all"], - "blacklist": ["es6.tailCall"] + "blacklist": ["es6.tailCall"], + "optional": ["optimisation.flow.forOf"] } diff --git a/src/babel/generation/index.js b/src/babel/generation/index.js index 26b7f749f7..bcd9146b0d 100644 --- a/src/babel/generation/index.js +++ b/src/babel/generation/index.js @@ -151,7 +151,7 @@ class CodeGenerator { // catch up to this nodes newline if we're behind if (node.loc && this.format.retainLines && this.buffer.buf) { var needsParens = false; - if (parent && (this.position.line < node.loc.start.line) && t.isTerminatorless(parent)) { + if (parent && this.position.line < node.loc.start.line && t.isTerminatorless(parent)) { needsParens = true; this._push("("); } diff --git a/src/babel/traversal/context.js b/src/babel/traversal/context.js index 1e9dd23183..21aacf14d7 100644 --- a/src/babel/traversal/context.js +++ b/src/babel/traversal/context.js @@ -32,7 +32,6 @@ export default class TraversalContext { for (let i = 0; i < queue.length; i++) { var path = queue[i]; if (visited.indexOf(path.node) >= 0) continue; - visited.push(path.node); if (path.visit()) { diff --git a/src/babel/types/converters.js b/src/babel/types/converters.js index a528497088..9a8faec76e 100644 --- a/src/babel/types/converters.js +++ b/src/babel/types/converters.js @@ -43,8 +43,7 @@ export function toSequenceExpression(nodes: Array, scope: Scope): Object var ensureLastUndefined = false; var exprs = []; - for (let i = 0; i < nodes.length; i++) { - var node = nodes[i]; + for (let node of (nodes: Array)) { if (t.isExpression(node)) { exprs.push(node); } else if (t.isExpressionStatement(node)) { diff --git a/src/babel/types/index.js b/src/babel/types/index.js index 3b31d88688..afefeac01e 100644 --- a/src/babel/types/index.js +++ b/src/babel/types/index.js @@ -79,8 +79,8 @@ export function isType(nodeType, targetType) { var aliases = t.FLIPPED_ALIAS_KEYS[targetType]; if (aliases) { - for (var i = 0; i < aliases.length; i++) { - if (nodeType === aliases[i]) return true; + for (var alias of (aliases: Array)) { + if (nodeType === alias) return true; } } @@ -122,9 +122,7 @@ each(t.BUILDER_KEYS, function (keys, type) { export function shallowEqual(actual: Object, expected: Object): boolean { var keys = Object.keys(expected); - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - + for (var key of (keys: Array)) { if (actual[key] !== expected[key]) { return false; } diff --git a/src/babel/types/retrievers.js b/src/babel/types/retrievers.js index b88a82bfe3..d325aded1f 100644 --- a/src/babel/types/retrievers.js +++ b/src/babel/types/retrievers.js @@ -23,8 +23,7 @@ export function getBindingIdentifiers(node: Object): Object { search.push(node.declaration); } } else if (keys) { - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; + for (var key of (keys: Array)) { search = search.concat(id[key] || []); } } diff --git a/src/babel/types/validators.js b/src/babel/types/validators.js index 2c57deac1d..cbf82b33ee 100644 --- a/src/babel/types/validators.js +++ b/src/babel/types/validators.js @@ -42,8 +42,7 @@ export function isReferenced(node: Object, parent: Object): boolean { case "ArrowFunctionExpression": case "FunctionDeclaration": case "FunctionExpression": - for (var i = 0; i < parent.params.length; i++) { - var param = parent.params[i]; + for (var param of (parent.params: Array)) { if (param === node) return false; }