From b9b1a44c285b50c79220a751b555ed44285db7b4 Mon Sep 17 00:00:00 2001 From: Sebastian McKenzie Date: Thu, 22 Jan 2015 10:53:05 +1100 Subject: [PATCH] support async await inside of let scoping closure wrapper - fixes #565 --- lib/6to5/transformation/transformers/es6/block-scoping.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lib/6to5/transformation/transformers/es6/block-scoping.js b/lib/6to5/transformation/transformers/es6/block-scoping.js index 023120b268..7778f36db9 100644 --- a/lib/6to5/transformation/transformers/es6/block-scoping.js +++ b/lib/6to5/transformation/transformers/es6/block-scoping.js @@ -211,12 +211,20 @@ LetScoping.prototype.needsClosure = function () { var call = t.callExpression(fn, params); var ret = this.scope.generateUidIdentifier("ret"); + // handle generators var hasYield = traverse.hasType(fn.body, this.scope, "YieldExpression", t.FUNCTION_TYPES); if (hasYield) { fn.generator = true; call = t.yieldExpression(call, true); } + // handlers async functions + var hasAsync = traverse.hasType(fn.body, this.scope, "AwaitExpression", t.FUNCTION_TYPES); + if (hasAsync) { + fn.async = true; + call = t.awaitExpression(call, true); + } + this.build(ret, call); };