diff --git a/src/babel/generation/generators/methods.js b/src/babel/generation/generators/methods.js index 78829d2308..933282f500 100644 --- a/src/babel/generation/generators/methods.js +++ b/src/babel/generation/generators/methods.js @@ -75,5 +75,16 @@ export function ArrowFunctionExpression(node, print) { } this.push(" => "); + + const bodyNeedsParens = t.isObjectExpression(node.body); + + if (bodyNeedsParens) { + this.push("("); + } + print(node.body); + + if (bodyNeedsParens) { + this.push(")"); + } } diff --git a/test/core/fixtures/generation/parentheses/arrow-function-object-body/actual.js b/test/core/fixtures/generation/parentheses/arrow-function-object-body/actual.js new file mode 100644 index 0000000000..d9187763fe --- /dev/null +++ b/test/core/fixtures/generation/parentheses/arrow-function-object-body/actual.js @@ -0,0 +1,4 @@ +var foo = arr.map(v => ({ + x: v.bar, + y: v.bar*2 +})); diff --git a/test/core/fixtures/generation/parentheses/arrow-function-object-body/expected.js b/test/core/fixtures/generation/parentheses/arrow-function-object-body/expected.js new file mode 100644 index 0000000000..18f4fa7da5 --- /dev/null +++ b/test/core/fixtures/generation/parentheses/arrow-function-object-body/expected.js @@ -0,0 +1,4 @@ +var foo = arr.map(v => ({ + x: v.bar, + y: v.bar * 2 +}));