From a6f04055c01e48181acc50089acd1e1d3c55ae67 Mon Sep 17 00:00:00 2001 From: Sebastian McKenzie Date: Thu, 25 Jun 2015 04:10:32 +0100 Subject: [PATCH] fix block scoping transformer --- .../transformers/es6/block-scoping.js | 40 +++++++++---------- 1 file changed, 18 insertions(+), 22 deletions(-) diff --git a/src/babel/transformation/transformers/es6/block-scoping.js b/src/babel/transformation/transformers/es6/block-scoping.js index b99fc1e6ac..b8c902a034 100644 --- a/src/babel/transformation/transformers/es6/block-scoping.js +++ b/src/babel/transformation/transformers/es6/block-scoping.js @@ -149,30 +149,26 @@ var letReferenceFunctionVisitor = { }; var hoistVarDeclarationsVisitor = { - VariableDeclaration(node, parent, scope, self) { - return self.pushDeclar(node).map(t.expressionStatement); - }, - - ForStatement(node, parent, scope, self) { - if (isVar(node.init, node)) { - var nodes = self.pushDeclar(node.init); - if (nodes.length === 1) { - node.init = nodes[0]; - } else { - node.init = t.sequenceExpression(nodes); + enter(node, parent, scope, self) { + if (this.isForStatement()) { + if (isVar(node.init, node)) { + var nodes = self.pushDeclar(node.init); + if (nodes.length === 1) { + node.init = nodes[0]; + } else { + node.init = t.sequenceExpression(nodes); + } } + } else if (this.isFor()) { + if (isVar(node.left, node)) { + node.left = node.left.declarations[0].id; + self.pushDeclar(node.left); + } + } else if (isVar(node, parent)) { + return self.pushDeclar(node).map(t.expressionStatement); + } else if (this.isFunction()) { + return this.skip(); } - }, - - For(node, parent, scope, self) { - if (isVar(node.left, node)) { - self.pushDeclar(node.left); - node.left = node.left.declarations[0].id; - } - }, - - Function() { - this.skip(); } };