Skip to content

Dont-Negate-Is-Instanceof-Operands

Sourcery rule id: dont-negate-is-instanceof-operands

Description

in and instanceof have lower precedence than negation operators.

Match

if (!"prop" in myObj) {  // Noncompliant;  "in" operator is checking property "false"
  doTheThing();  // this block will be never executed
}

Explanation

Since negation is applied first, checking !key in dict checks whether !key is in dict rather than whether the key is not in the dict, and similarly with instanceof.

This rule warns when the left operand of is or instanceof is negated.