From c889ef40584d6c4909dcb4325442100766238a19 Mon Sep 17 00:00:00 2001 From: Amjad Masad Date: Thu, 17 Dec 2015 23:18:43 -0800 Subject: [PATCH 1/2] Parenthesize arrow function when part of logical or binary expression --- packages/babel-generator/src/node/parentheses.js | 4 ++++ .../test/fixtures/parentheses/arrow-function/actual.js | 1 + .../test/fixtures/parentheses/arrow-function/expected.js | 1 + 3 files changed, 6 insertions(+) create mode 100644 packages/babel-generator/test/fixtures/parentheses/arrow-function/actual.js create mode 100644 packages/babel-generator/test/fixtures/parentheses/arrow-function/expected.js diff --git a/packages/babel-generator/src/node/parentheses.js b/packages/babel-generator/src/node/parentheses.js index 0092e59973..57d57d3fb8 100644 --- a/packages/babel-generator/src/node/parentheses.js +++ b/packages/babel-generator/src/node/parentheses.js @@ -191,6 +191,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()); From 4aaaeb9ccf52e9471e1899349f6e8c72a6859de7 Mon Sep 17 00:00:00 2001 From: Amjad Masad Date: Thu, 17 Dec 2015 23:31:52 -0800 Subject: [PATCH 2/2] decouple arrow functions from function exprs --- packages/babel-generator/src/node/parentheses.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/babel-generator/src/node/parentheses.js b/packages/babel-generator/src/node/parentheses.js index 57d57d3fb8..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 {