From 3e0b9b6b4eee4ef38e15dae39aed37c7a642cff8 Mon Sep 17 00:00:00 2001 From: Jhen Date: Sun, 20 Sep 2015 04:01:10 +0800 Subject: [PATCH] [es6.tailCall] Move ' = undefined' to the place in front of Continue statement --- .../transformers/es6/tail-call.js | 27 +++++++++---------- 1 file changed, 13 insertions(+), 14 deletions(-) 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;