ensureBlock on if statements with expression return statements - fixes #764

This commit is contained in:
Sebastian McKenzie
2015-02-14 19:07:23 +11:00
parent 0e1743738e
commit 3649fad485
3 changed files with 22 additions and 1 deletions

View File

@@ -294,7 +294,15 @@ TailCallTransformer.prototype.subTransformCallExpression = function (node) {
// looks for and replaces tail recursion calls
var firstPass = {
enter: function (node, parent, scope, state) {
if (t.isReturnStatement(node)) {
if (t.isIfStatement(node)) {
if (t.isReturnStatement(node.alternate)) {
t.ensureBlock(node, "alternate");
}
if (t.isReturnStatement(node.consequent)) {
t.ensureBlock(node, "consequent");
}
} else if (t.isReturnStatement(node)) {
this.skip();
return state.subTransform(node.argument);
} else if (t.isTryStatement(parent)) {