diff --git a/lib/rules/no-extra-parens.js b/lib/rules/no-extra-parens.js index 691f7fe5cf2..f155c7daa57 100644 --- a/lib/rules/no-extra-parens.js +++ b/lib/rules/no-extra-parens.js @@ -265,10 +265,11 @@ module.exports = { const nextTwoTokens = sourceCode.getTokensAfter(node, { count: 2 }); const rightParenToken = nextTwoTokens[0]; const tokenAfterRightParen = nextTwoTokens[1]; + const tokenBeforeRightParen = sourceCode.getLastToken(node); return rightParenToken && tokenAfterRightParen && !sourceCode.isSpaceBetweenTokens(rightParenToken, tokenAfterRightParen) && - tokenAfterRightParen.type === "Keyword"; + !astUtils.canTokensBeAdjacent(tokenBeforeRightParen, tokenAfterRightParen); } /** diff --git a/tests/lib/rules/no-extra-parens.js b/tests/lib/rules/no-extra-parens.js index b870d05c89e..2f27e9aeca0 100644 --- a/tests/lib/rules/no-extra-parens.js +++ b/tests/lib/rules/no-extra-parens.js @@ -1009,6 +1009,13 @@ ruleTester.run("no-extra-parens", rule, { 1, { parserOptions: { ecmaVersion: 2015 } } ), + invalid( + "for ((foo['bar'])of baz);", + "for (foo['bar']of baz);", + "MemberExpression", + 1, + { parserOptions: { ecmaVersion: 2015 } } + ), invalid( "() => (({ foo: 1 }).foo)", "() => ({ foo: 1 }).foo", @@ -1018,3 +1025,5 @@ ruleTester.run("no-extra-parens", rule, { ) ] }); + +