summaryrefslogtreecommitdiff
path: root/tools/node_modules/eslint/lib/rules/no-extra-parens.js
diff options
context:
space:
mode:
Diffstat (limited to 'tools/node_modules/eslint/lib/rules/no-extra-parens.js')
-rw-r--r--tools/node_modules/eslint/lib/rules/no-extra-parens.js38
1 files changed, 26 insertions, 12 deletions
diff --git a/tools/node_modules/eslint/lib/rules/no-extra-parens.js b/tools/node_modules/eslint/lib/rules/no-extra-parens.js
index 7afe7625df..8d358d23ad 100644
--- a/tools/node_modules/eslint/lib/rules/no-extra-parens.js
+++ b/tools/node_modules/eslint/lib/rules/no-extra-parens.js
@@ -472,20 +472,34 @@ module.exports = {
const callee = node.callee;
if (hasExcessParensWithPrecedence(callee, precedence(node))) {
- const hasNewParensException = callee.type === "NewExpression" && !isNewExpressionWithParens(callee);
-
if (
hasDoubleExcessParens(callee) ||
- !isIIFE(node) &&
- !hasNewParensException &&
!(
-
- // Allow extra parens around a new expression if they are intervening parentheses.
- node.type === "NewExpression" &&
- callee.type === "MemberExpression" &&
- doesMemberExpressionContainCallExpression(callee)
- ) &&
- !(!node.optional && callee.type === "ChainExpression")
+ isIIFE(node) ||
+
+ // (new A)(); new (new A)();
+ (
+ callee.type === "NewExpression" &&
+ !isNewExpressionWithParens(callee) &&
+ !(
+ node.type === "NewExpression" &&
+ !isNewExpressionWithParens(node)
+ )
+ ) ||
+
+ // new (a().b)(); new (a.b().c);
+ (
+ node.type === "NewExpression" &&
+ callee.type === "MemberExpression" &&
+ doesMemberExpressionContainCallExpression(callee)
+ ) ||
+
+ // (a?.b)(); (a?.())();
+ (
+ !node.optional &&
+ callee.type === "ChainExpression"
+ )
+ )
) {
report(node.callee);
}
@@ -511,7 +525,7 @@ module.exports = {
if (!shouldSkipLeft && hasExcessParens(node.left)) {
if (
- !(node.left.type === "UnaryExpression" && isExponentiation) &&
+ !(["AwaitExpression", "UnaryExpression"].includes(node.left.type) && isExponentiation) &&
!astUtils.isMixedLogicalAndCoalesceExpressions(node.left, node) &&
(leftPrecedence > prec || (leftPrecedence === prec && !isExponentiation)) ||
isParenthesisedTwice(node.left)