From 80f109efeb6d37cfa8d9cf88b32f51174f0eecfc Mon Sep 17 00:00:00 2001 From: Brian Donovan Date: Thu, 9 Apr 2015 11:50:52 -0700 Subject: [PATCH] Ensure arrow function bodies are wrapped in parens if needed. Closes #1214. --- src/babel/generation/generators/methods.js | 11 +++++++++++ .../parentheses/arrow-function-object-body/actual.js | 4 ++++ .../arrow-function-object-body/expected.js | 4 ++++ 3 files changed, 19 insertions(+) create mode 100644 test/core/fixtures/generation/parentheses/arrow-function-object-body/actual.js create mode 100644 test/core/fixtures/generation/parentheses/arrow-function-object-body/expected.js 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 +}));