diff --git a/packages/babel/src/transformation/transformers/es6/tail-call.js b/packages/babel/src/transformation/transformers/es6/tail-call.js index 7a4ae6c37d..350de4c0c6 100644 --- a/packages/babel/src/transformation/transformers/es6/tail-call.js +++ b/packages/babel/src/transformation/transformers/es6/tail-call.js @@ -240,20 +240,6 @@ class TailCallTransformer { bodyNode._blockHoist = 2; } - if (this.vars.length > 0) { - var declarations = flatten(map(this.vars, function (decl) { - return decl.declarations; - })); - - var assignment = reduceRight(declarations, function (expr, decl) { - return t.assignmentExpression("=", decl.id, expr); - }, t.identifier("undefined")); - - var statement = t.expressionStatement(assignment); - statement._blockHoist = Infinity; - body.unshift(statement); - } - var paramDecls = this.paramDecls; if (paramDecls.length > 0) { var paramDecl = t.variableDeclaration("var", paramDecls); @@ -492,6 +478,19 @@ class TailCallTransformer { t.assignmentExpression("=", this.getAgainId(), t.literal(true)) )); + if (this.vars.length > 0) { + var declarations = flatten(map(this.vars, function (decl) { + return decl.declarations; + })); + + var assignment = reduceRight(declarations, function (expr, decl) { + return t.assignmentExpression("=", decl.id, expr); + }, t.identifier("undefined")); + + var statement = t.expressionStatement(assignment); + body.push(statement); + } + body.push(t.continueStatement(this.getFunctionId())); return body;