diff --git a/lib/6to5/types.js b/lib/6to5/types.js index 5102d9125f..c3ccde6d95 100644 --- a/lib/6to5/types.js +++ b/lib/6to5/types.js @@ -48,15 +48,27 @@ exports.isReferenced = function (node, parent) { }; exports.ensureBlock = function (node) { - var block = node.body; - if (block.type === "BlockStatement") return; + node[key] = exports.toBlock(node.body, node); +}; - if (!_.isArray(block)) { - if (!n.Statement.check(block)) block = b.returnStatement(block); - block = [block]; +exports.toBlock = function (node, parent) { + if (node.type === "BlockStatement") { + return node; } - node.body = b.blockStatement(block); + if (!_.isArray(node)) { + if (!n.Statement.check(node)) { + if (exports.isFunction(parent)) { + node = b.returnStatement(node); + } else { + node = b.expressionStatement(node); + } + } + + node = [node]; + } + + return b.blockStatement(node); }; exports.getSpecifierName = function (specifier) {