diff --git a/src/libs/qmljs/qmljscheck.cpp b/src/libs/qmljs/qmljscheck.cpp index 389053bc448ffcf09420fb81bf892ffd58de853e..65a79f2cf3d33f2c367dd321677dc2a86ecd4f4d 100644 --- a/src/libs/qmljs/qmljscheck.cpp +++ b/src/libs/qmljs/qmljscheck.cpp @@ -545,13 +545,15 @@ static bool shouldAvoidNonStrictEqualityCheck(ExpressionNode *exp, const Value * if (NumericLiteral *literal = cast<NumericLiteral *>(exp)) { if (literal->value == 0 && !other->asNumberValue()) return true; - } else if (cast<TrueLiteral *>(exp) || cast<FalseLiteral *>(exp) || cast<NullExpression *>(exp)) { + } else if ((cast<TrueLiteral *>(exp) || cast<FalseLiteral *>(exp)) && !other->asBooleanValue()) { + return true; + } else if (cast<NullExpression *>(exp)) { return true; } else if (IdentifierExpression *ident = cast<IdentifierExpression *>(exp)) { if (ident->name && ident->name->asString() == QLatin1String("undefined")) return true; } else if (StringLiteral *literal = cast<StringLiteral *>(exp)) { - if (!literal->value || literal->value->asString().isEmpty()) + if ((!literal->value || literal->value->asString().isEmpty()) && !other->asStringValue()) return true; } return false;