diff --git a/lib/rules/yoda.js b/lib/rules/yoda.js index 20f9ce8850b..338849eabd5 100644 --- a/lib/rules/yoda.js +++ b/lib/rules/yoda.js @@ -235,7 +235,7 @@ module.exports = { function isBetweenTest() { let leftLiteral, rightLiteral; - if (node.operator === "&&") { + if (node.operator === "&&" && same(left.right, right.left)) { leftLiteral = getNormalizedLiteral(left.left); rightLiteral = getNormalizedLiteral(right.right); @@ -247,7 +247,7 @@ module.exports = { return true; } - if (leftLiteral.value <= rightLiteral.value && same(left.right, right.left)) { + if (leftLiteral.value <= rightLiteral.value) { return true; } } @@ -261,7 +261,7 @@ module.exports = { function isOutsideTest() { let leftLiteral, rightLiteral; - if (node.operator === "||") { + if (node.operator === "||" && same(left.left, right.right)) { leftLiteral = getNormalizedLiteral(left.right); rightLiteral = getNormalizedLiteral(right.left); @@ -273,7 +273,7 @@ module.exports = { return true; } - if ((leftLiteral.value <= rightLiteral.value) && same(left.left, right.right)) { + if ((leftLiteral.value <= rightLiteral.value)) { return true; } } diff --git a/tests/lib/rules/yoda.js b/tests/lib/rules/yoda.js index f0e239a1dc5..a149b06886e 100644 --- a/tests/lib/rules/yoda.js +++ b/tests/lib/rules/yoda.js @@ -1094,6 +1094,18 @@ ruleTester.run("yoda", rule, { type: "BinaryExpression" } ] + }, + { + code: "if (0 < a && b < max) {}", + output: "if (a > 0 && b < max) {}", + options: ["never", { exceptRange: true }], + errors: [ + { + messageId: "expected", + data: { expectedSide: "right", operator: "<" }, + type: "BinaryExpression" + } + ] } ]