From b234603e2483053fa6eaa0fb42994c4a403cd472 Mon Sep 17 00:00:00 2001 From: Sebastian McKenzie Date: Mon, 23 Mar 2015 16:47:17 +1100 Subject: [PATCH] add callDelegate transformation helper - fixes #1064 --- src/babel/transformation/helpers/call-delegate.js | 11 +++++++++++ .../transformers/es6/parameters.default.js | 7 ++----- 2 files changed, 13 insertions(+), 5 deletions(-) create mode 100644 src/babel/transformation/helpers/call-delegate.js diff --git a/src/babel/transformation/helpers/call-delegate.js b/src/babel/transformation/helpers/call-delegate.js new file mode 100644 index 0000000000..bf306f5e9c --- /dev/null +++ b/src/babel/transformation/helpers/call-delegate.js @@ -0,0 +1,11 @@ +import * as t from "../../types"; + +export default function (node) { + var container = t.functionExpression(null, [], node.body, node.generator, node.async); + container.shadow = true; + + var call = t.callExpression(container, []); + if (node.generator) call = t.yieldExpression(call, true); + + return t.returnStatement(call); +} diff --git a/src/babel/transformation/transformers/es6/parameters.default.js b/src/babel/transformation/transformers/es6/parameters.default.js index 2928a4aebb..02864c6939 100644 --- a/src/babel/transformation/transformers/es6/parameters.default.js +++ b/src/babel/transformation/transformers/es6/parameters.default.js @@ -1,3 +1,4 @@ +import callDelegate from "../../helpers/call-delegate"; import * as util from "../../../util"; import * as t from "../../../types"; @@ -91,11 +92,7 @@ exports.Function = function (node, parent, scope, file) { node.params = node.params.slice(0, lastNonDefaultParam); if (state.iife) { - var container = t.functionExpression(null, [], node.body, node.generator); - container.shadow = true; - - body.push(t.returnStatement(t.callExpression(container, []))); - + body.push(callDelegate(node)); node.body = t.blockStatement(body); } else { node.body.body = body.concat(node.body.body);