diff --git a/packages/babel-generator/src/node/parentheses.js b/packages/babel-generator/src/node/parentheses.js index 16e5b4d11e..777bb6e519 100644 --- a/packages/babel-generator/src/node/parentheses.js +++ b/packages/babel-generator/src/node/parentheses.js @@ -145,23 +145,17 @@ export function SequenceExpression(node: Object, parent: Object): boolean { } export function AwaitExpression(node: Object, parent: Object): boolean { - return t.isBinary(parent) || - t.isUnaryLike(parent) || + return t.isUnaryLike(parent) || t.isCallExpression(parent) || t.isMemberExpression(parent) || - t.isNewExpression(parent) || - t.isConditionalExpression(parent) || - t.isAwaitExpression(parent); + t.isNewExpression(parent); } export function YieldExpression(node: Object, parent: Object): boolean { - return t.isBinary(parent) || - t.isUnaryLike(parent) || + return t.isUnaryLike(parent) || t.isCallExpression(parent) || t.isMemberExpression(parent) || - t.isNewExpression(parent) || - t.isConditionalExpression(parent) || - t.isYieldExpression(parent); + t.isNewExpression(parent); } export function ClassExpression(node: Object, parent: Object): boolean { diff --git a/packages/babel-generator/test/fixtures/harmony-edgecase/yield-precedence/expected.js b/packages/babel-generator/test/fixtures/harmony-edgecase/yield-precedence/expected.js index 302ffe6c55..ebb08a34bb 100644 --- a/packages/babel-generator/test/fixtures/harmony-edgecase/yield-precedence/expected.js +++ b/packages/babel-generator/test/fixtures/harmony-edgecase/yield-precedence/expected.js @@ -4,5 +4,5 @@ function* foo() { var c = yield a = b; yield a, yield b; yield a = b; - return (yield 1) || (yield 2); + return yield 1 || yield 2; } diff --git a/packages/babel-generator/test/fixtures/parentheses/await-expression/expected.js b/packages/babel-generator/test/fixtures/parentheses/await-expression/expected.js index 6ac1480c55..d154d585d2 100644 --- a/packages/babel-generator/test/fixtures/parentheses/await-expression/expected.js +++ b/packages/babel-generator/test/fixtures/parentheses/await-expression/expected.js @@ -1,9 +1,9 @@ async function asdf() { - (await 1) || (await 2); + await 1 || await 2; (await b)(); new (await b)(); - true ? (await 1) : (await 2); - await (await 1); + true ? await 1 : await 2; + await await 1; } async function a(b) { diff --git a/packages/babel-generator/test/fixtures/parentheses/yield-expression/actual.js b/packages/babel-generator/test/fixtures/parentheses/yield-expression/actual.js new file mode 100644 index 0000000000..ea61f3583c --- /dev/null +++ b/packages/babel-generator/test/fixtures/parentheses/yield-expression/actual.js @@ -0,0 +1,11 @@ +function* asdf() { + (yield 1) || (yield 2); + (yield b)(); + new (yield b)(); + true ? (yield 1) : (yield 2); + yield (yield 1); +} + +function* a(b) { + (yield xhr({ url: "views/test.html" })).data; +} diff --git a/packages/babel-generator/test/fixtures/parentheses/yield-expression/expected.js b/packages/babel-generator/test/fixtures/parentheses/yield-expression/expected.js new file mode 100644 index 0000000000..5c191ac909 --- /dev/null +++ b/packages/babel-generator/test/fixtures/parentheses/yield-expression/expected.js @@ -0,0 +1,11 @@ +function* asdf() { + yield 1 || yield 2; + (yield b)(); + new (yield b)(); + true ? yield 1 : yield 2; + yield yield 1; +} + +function* a(b) { + (yield xhr({ url: "views/test.html" })).data; +}