diff --git a/packages/babel-generator/src/node/parentheses.js b/packages/babel-generator/src/node/parentheses.js index 0092e59973..14bc66028c 100644 --- a/packages/babel-generator/src/node/parentheses.js +++ b/packages/babel-generator/src/node/parentheses.js @@ -182,7 +182,12 @@ export function FunctionExpression(node: Object, parent: Object): boolean { return true; } - return ArrowFunctionExpression(node, parent); + // export default (function () {}); + if (t.isExportDeclaration(parent)) { + return true; + } + + return UnaryLike(node, parent); } export function ArrowFunctionExpression(node: Object, parent: Object): boolean { @@ -191,6 +196,10 @@ export function ArrowFunctionExpression(node: Object, parent: Object): boolean { return true; } + if (t.isBinaryExpression(parent) || t.isLogicalExpression(parent)) { + return true; + } + return UnaryLike(node, parent); } diff --git a/packages/babel-generator/test/fixtures/parentheses/arrow-function/actual.js b/packages/babel-generator/test/fixtures/parentheses/arrow-function/actual.js new file mode 100644 index 0000000000..3735841221 --- /dev/null +++ b/packages/babel-generator/test/fixtures/parentheses/arrow-function/actual.js @@ -0,0 +1 @@ +foo || (bar => bar()); diff --git a/packages/babel-generator/test/fixtures/parentheses/arrow-function/expected.js b/packages/babel-generator/test/fixtures/parentheses/arrow-function/expected.js new file mode 100644 index 0000000000..3735841221 --- /dev/null +++ b/packages/babel-generator/test/fixtures/parentheses/arrow-function/expected.js @@ -0,0 +1 @@ +foo || (bar => bar());