From 2bb24f996f025dccd26e1e5269d932efdeebc72d Mon Sep 17 00:00:00 2001 From: Paul Happ Date: Tue, 27 Nov 2018 09:45:06 -0600 Subject: [PATCH] Fix yield expression transform (#9076) --- packages/babel-generator/src/node/parentheses.js | 1 + .../test/fixtures/parentheses/yield-expression/input.js | 4 ++++ .../test/fixtures/parentheses/yield-expression/output.js | 6 +++++- 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/packages/babel-generator/src/node/parentheses.js b/packages/babel-generator/src/node/parentheses.js index 8213fdd92e36..8f7c137f5224 100644 --- a/packages/babel-generator/src/node/parentheses.js +++ b/packages/babel-generator/src/node/parentheses.js @@ -166,6 +166,7 @@ export function YieldExpression(node: Object, parent: Object): boolean { t.isCallExpression(parent) || t.isMemberExpression(parent) || t.isNewExpression(parent) || + (t.isAwaitExpression(parent) && t.isYieldExpression(node)) || (t.isConditionalExpression(parent) && node === parent.test) || isClassExtendsClause(node, parent) ); diff --git a/packages/babel-generator/test/fixtures/parentheses/yield-expression/input.js b/packages/babel-generator/test/fixtures/parentheses/yield-expression/input.js index b000b972b537..2d6b7957f17c 100644 --- a/packages/babel-generator/test/fixtures/parentheses/yield-expression/input.js +++ b/packages/babel-generator/test/fixtures/parentheses/yield-expression/input.js @@ -10,3 +10,7 @@ function* asdf() { function* a(b) { (yield xhr({ url: "views/test.html" })).data; } + +(async function* () { + await (yield 1); +}); diff --git a/packages/babel-generator/test/fixtures/parentheses/yield-expression/output.js b/packages/babel-generator/test/fixtures/parentheses/yield-expression/output.js index 28340375a453..e7c3bcd100df 100644 --- a/packages/babel-generator/test/fixtures/parentheses/yield-expression/output.js +++ b/packages/babel-generator/test/fixtures/parentheses/yield-expression/output.js @@ -11,4 +11,8 @@ function* a(b) { (yield xhr({ url: "views/test.html" })).data; -} \ No newline at end of file +} + +(async function* () { + await (yield 1); +});