From 1f1424cb200e609d58645f6c54739e11469e6265 Mon Sep 17 00:00:00 2001 From: YeonJuan Date: Sat, 15 Feb 2020 00:57:00 +0900 Subject: [PATCH] Fix: fix inconsistently works option in no-extra-parens (fixes #12717) (#12843) --- lib/rules/no-extra-parens.js | 3 +-- tests/lib/rules/no-extra-parens.js | 35 +++++++++++++++++++++++++++--- 2 files changed, 33 insertions(+), 5 deletions(-) diff --git a/lib/rules/no-extra-parens.js b/lib/rules/no-extra-parens.js index e70353576bb..a5488c3c1c6 100644 --- a/lib/rules/no-extra-parens.js +++ b/lib/rules/no-extra-parens.js @@ -702,8 +702,7 @@ module.exports = { } if (node.body.type === "ConditionalExpression" && - IGNORE_ARROW_CONDITIONALS && - !isParenthesisedTwice(node.body) + IGNORE_ARROW_CONDITIONALS ) { return; } diff --git a/tests/lib/rules/no-extra-parens.js b/tests/lib/rules/no-extra-parens.js index 46de155fbb0..2766a135590 100644 --- a/tests/lib/rules/no-extra-parens.js +++ b/tests/lib/rules/no-extra-parens.js @@ -244,12 +244,19 @@ ruleTester.run("no-extra-parens", rule, { // "functions" enables reports for function nodes only { code: "(0)", options: ["functions"] }, + { code: "((0))", options: ["functions"] }, { code: "a + (b * c)", options: ["functions"] }, + { code: "a + ((b * c))", options: ["functions"] }, { code: "(a)(b)", options: ["functions"] }, + { code: "((a))(b)", options: ["functions"] }, { code: "a, (b = c)", options: ["functions"] }, + { code: "a, ((b = c))", options: ["functions"] }, { code: "for(a in (0));", options: ["functions"] }, + { code: "for(a in ((0)));", options: ["functions"] }, { code: "var a = (b = c)", options: ["functions"] }, + { code: "var a = ((b = c))", options: ["functions"] }, { code: "_ => (a = 0)", options: ["functions"] }, + { code: "_ => ((a = 0))", options: ["functions"] }, // ["all", { conditionalAssign: false }] enables extra parens around conditional assignments { code: "while ((foo = bar())) {}", options: ["all", { conditionalAssign: false }] }, @@ -257,6 +264,8 @@ ruleTester.run("no-extra-parens", rule, { { code: "do; while ((foo = bar()))", options: ["all", { conditionalAssign: false }] }, { code: "for (;(a = b););", options: ["all", { conditionalAssign: false }] }, { code: "var a = ((b = c)) ? foo : bar;", options: ["all", { conditionalAssign: false }] }, + { code: "while (((foo = bar()))) {}", options: ["all", { conditionalAssign: false }] }, + { code: "var a = (((b = c))) ? foo : bar;", options: ["all", { conditionalAssign: false }] }, // ["all", { nestedBinaryExpressions: false }] enables extra parens around conditional assignments { code: "a + (b * c)", options: ["all", { nestedBinaryExpressions: false }] }, @@ -369,6 +378,7 @@ ruleTester.run("no-extra-parens", rule, { // ["all", { ignoreJSX: "all" }] { code: "const Component = (
)", options: ["all", { ignoreJSX: "all" }] }, + { code: "const Component = ((
))", options: ["all", { ignoreJSX: "all" }] }, { code: [ "const Component = (<>", @@ -377,6 +387,14 @@ ruleTester.run("no-extra-parens", rule, { ].join("\n"), options: ["all", { ignoreJSX: "all" }] }, + { + code: [ + "const Component = ((<>", + "

", + "));" + ].join("\n"), + options: ["all", { ignoreJSX: "all" }] + }, { code: [ "const Component = (

", @@ -403,6 +421,7 @@ ruleTester.run("no-extra-parens", rule, { // ["all", { ignoreJSX: "single-line" }] { code: "const Component = (
);", options: ["all", { ignoreJSX: "single-line" }] }, + { code: "const Component = ((
));", options: ["all", { ignoreJSX: "single-line" }] }, { code: [ "const Component = (", @@ -430,6 +449,16 @@ ruleTester.run("no-extra-parens", rule, { ].join("\n"), options: ["all", { ignoreJSX: "multi-line" }] }, + { + code: [ + "const Component = ((", + "
", + "

", + "

", + "));" + ].join("\n"), + options: ["all", { ignoreJSX: "multi-line" }] + }, { code: [ "const Component = (
", @@ -459,6 +488,7 @@ ruleTester.run("no-extra-parens", rule, { // ["all", { enforceForArrowConditionals: false }] { code: "var a = b => 1 ? 2 : 3", options: ["all", { enforceForArrowConditionals: false }] }, { code: "var a = (b) => (1 ? 2 : 3)", options: ["all", { enforceForArrowConditionals: false }] }, + { code: "var a = (b) => ((1 ? 2 : 3))", options: ["all", { enforceForArrowConditionals: false }] }, // ["all", { enforceForSequenceExpressions: false }] { code: "(a, b)", options: ["all", { enforceForSequenceExpressions: false }] }, @@ -466,6 +496,7 @@ ruleTester.run("no-extra-parens", rule, { { code: "(foo(), bar());", options: ["all", { enforceForSequenceExpressions: false }] }, { code: "((foo(), bar()));", options: ["all", { enforceForSequenceExpressions: false }] }, { code: "if((a, b)){}", options: ["all", { enforceForSequenceExpressions: false }] }, + { code: "if(((a, b))){}", options: ["all", { enforceForSequenceExpressions: false }] }, { code: "while ((val = foo(), val < 10));", options: ["all", { enforceForSequenceExpressions: false }] }, // ["all", { enforceForNewInMemberExpressions: false }] @@ -1122,12 +1153,10 @@ ruleTester.run("no-extra-parens", rule, { } ] }, - - // ["all", { enforceForArrowConditionals: false }] { code: "var a = (b) => ((1 ? 2 : 3))", output: "var a = (b) => (1 ? 2 : 3)", - options: ["all", { enforceForArrowConditionals: false }], + options: ["all", { enforceForArrowConditionals: true }], errors: [ { messageId: "unexpected"