From 781785ec24deb2826fcd5579f4e75f6b35e945d0 Mon Sep 17 00:00:00 2001 From: Toru Nagashima Date: Wed, 7 Oct 2015 04:52:12 +0900 Subject: [PATCH] Fix: `no-cond-assign` had needed double parens in `for` (fixes #4023) --- lib/rules/no-cond-assign.js | 8 +++++++- tests/lib/rules/no-cond-assign.js | 4 ++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/lib/rules/no-cond-assign.js b/lib/rules/no-cond-assign.js index d43ecf89082..c83afca0afe 100644 --- a/lib/rules/no-cond-assign.js +++ b/lib/rules/no-cond-assign.js @@ -80,7 +80,13 @@ module.exports = function(context) { * @returns {void} */ function testForAssign(node) { - if (node.test && (node.test.type === "AssignmentExpression") && !isParenthesisedTwice(node.test)) { + if (node.test && + (node.test.type === "AssignmentExpression") && + (node.type === "ForStatement" ? + !isParenthesised(node.test) : + !isParenthesisedTwice(node.test) + ) + ) { // must match JSHint's error message context.report({ node: node, diff --git a/tests/lib/rules/no-cond-assign.js b/tests/lib/rules/no-cond-assign.js index dec33c15a80..eb544a985e7 100644 --- a/tests/lib/rules/no-cond-assign.js +++ b/tests/lib/rules/no-cond-assign.js @@ -27,10 +27,14 @@ ruleTester.run("no-cond-assign", rule, { "if ((someNode = someNode.parentNode) !== null) { }", { code: "if ((someNode = someNode.parentNode) !== null) { }", options: ["except-parens"] }, "if ((a = b));", + "while ((a = b));", + "do {} while ((a = b));", + "for (;(a = b););", "for (;;) {}", "if (someNode || (someNode = parentNode)) { }", "while (someNode || (someNode = parentNode)) { }", "do { } while (someNode || (someNode = parentNode));", + "for (;someNode || (someNode = parentNode););", "if ((function(node) { return (node = parentNode); })(someNode)) { }", { code: "x = 0;", options: ["always"] } ],