Skip to content

Commit c59d909

Browse files
committed
Fix: Extra paren check around object arrow bodies (fixes #5789)
1 parent c0cc535 commit c59d909

File tree

2 files changed

+6
-1
lines changed

2 files changed

+6
-1
lines changed

lib/rules/no-extra-parens.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -326,7 +326,7 @@ module.exports = function(context) {
326326

327327
"ArrowFunctionExpression": function(node) {
328328
if (node.body.type !== "BlockStatement") {
329-
if (node.body.type !== "ObjectExpression" && hasExcessParens(node.body) && precedence(node.body) >= precedence({type: "AssignmentExpression"})) {
329+
if (sourceCode.getFirstToken(node.body).value !== "{" && hasExcessParens(node.body) && precedence(node.body) >= precedence({type: "AssignmentExpression"})) {
330330
report(node.body);
331331
return;
332332
}

tests/lib/rules/no-extra-parens.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,11 @@ ruleTester.run("no-extra-parens", rule, {
177177
// Object literals as arrow function bodies need parentheses
178178
{ code: "x => ({foo: 1})", parserOptions: { ecmaVersion: 6 } },
179179

180+
// https://github.com/eslint/eslint/issues/5789
181+
{ code: "a => ({b: c}[d])", parserOptions: { ecmaVersion: 6 } },
182+
{ code: "a => ({b: c}.d())", parserOptions: { ecmaVersion: 6 } },
183+
{ code: "a => ({b: c}.d.e)", parserOptions: { ecmaVersion: 6 } },
184+
180185
// "functions" enables reports for function nodes only
181186
{code: "(0)", options: ["functions"]},
182187
{code: "a + (b * c)", options: ["functions"]},

0 commit comments

Comments
 (0)