regenerator icon indicating copy to clipboard operation
regenerator copied to clipboard

Regenerator-transform fails to transform 'await' inside template literal

Open AndreyBelym opened this issue 7 years ago • 1 comments

The following code

let answer = async () => 42;

(async () => console.log(`Answer is ${await answer()}`))()

gives the following error:

Error: index.js: unknown Expression of type "TemplateLiteral"
    at D:\test\node_modules\regenerator-transform\lib\emit.js:1035:15
    at Emitter.Ep.explodeExpression (D:\test\node_modules\regenerator-transform\lib\emit.js:1037:4)
    at explodeViaTempVar (D:\test\node_modules\regenerator-transform\lib\emit.js:810:23)
    at D:\test\node_modules\regenerator-transform\lib\emit.js:893:24
    at Array.forEach (native)
    at D:\test\node_modules\regenerator-transform\lib\emit.js:892:18
    at Emitter.Ep.explodeExpression (D:\test\node_modules\regenerator-transform\lib\emit.js:1037:4)
    at D:\test\node_modules\regenerator-transform\lib\emit.js:579:23
    at Emitter.Ep.explodeStatement (D:\test\node_modules\regenerator-transform\lib\emit.js:659:4)
    at D:\test\node_modules\regenerator-transform\lib\emit.js:348:12

with [email protected] and [email protected], [email protected].

AndreyBelym avatar Feb 02 '17 07:02 AndreyBelym

This is definitely a bug! Usually this is solved by running the Babel transform for template literals before regenerator-transform, but I think it would be relatively easy to handle TemplateLiteral nodes more gracefully within Regenerator.

benjamn avatar Feb 02 '17 16:02 benjamn