diff --git a/src/libs/qmljs/qmljscheck.cpp b/src/libs/qmljs/qmljscheck.cpp index 9aaf5c02a19..1d81080c7e7 100644 --- a/src/libs/qmljs/qmljscheck.cpp +++ b/src/libs/qmljs/qmljscheck.cpp @@ -1364,14 +1364,6 @@ static bool shouldAvoidNonStrictEqualityCheck(const Value *lhs, const Value *rhs return false; } -static bool equalIsAlwaysFalse(const Value *lhs, const Value *rhs) -{ - if ((lhs->asNullValue() || lhs->asUndefinedValue()) - && (rhs->asNumberValue() || rhs->asBooleanValue() || rhs->asStringValue())) - return true; - return false; -} - static bool isIntegerValue(const Value *value) { if (value->asNumberValue() || value->asIntValue()) @@ -1402,33 +1394,6 @@ static bool isBooleanValue(const Value *value) return false; } -static bool strictCompareConstant(const Value *lhs, const Value *rhs) -{ - // attached properties and working at runtime cases may be undefined at evaluation time - if (lhs->asUndefinedValue() || rhs->asUndefinedValue()) - return false; - if (lhs->asUnknownValue() || rhs->asUnknownValue()) - return false; - if (lhs->asFunctionValue() || rhs->asFunctionValue()) // function evaluation not implemented - return false; - if (isIntegerValue(lhs) && isIntegerValue(rhs)) - return false; - if (isStringValue(lhs) && isStringValue(rhs)) - return false; - if (isBooleanValue(lhs) && isBooleanValue(rhs)) - return false; - if (lhs->asBooleanValue() && !rhs->asBooleanValue()) - return true; - if (lhs->asNumberValue() && !rhs->asNumberValue()) - return true; - if (lhs->asStringValue() && !rhs->asStringValue()) - return true; - if (lhs->asObjectValue() && (!rhs->asObjectValue() || !rhs->asNullValue())) - return true; - return false; -} - - bool Check::visit(BinaryExpression *ast) { const QString source = _doc->source(); @@ -1454,18 +1419,6 @@ bool Check::visit(BinaryExpression *ast) || shouldAvoidNonStrictEqualityCheck(rhsValue, lhsValue)) { addMessage(MaybeWarnEqualityTypeCoercion, ast->operatorToken); } - if (equalIsAlwaysFalse(lhsValue, rhsValue) - || equalIsAlwaysFalse(rhsValue, lhsValue)) - addMessage(WarnLogicalValueDoesNotDependOnValues, ast->operatorToken); - } - if (ast->op == QSOperator::StrictEqual || ast->op == QSOperator::StrictNotEqual) { - Evaluate eval(&_scopeChain); - const Value *lhsValue = eval(ast->left); - const Value *rhsValue = eval(ast->right); - if (strictCompareConstant(lhsValue, rhsValue) - || strictCompareConstant(rhsValue, lhsValue)) { - addMessage(WarnLogicalValueDoesNotDependOnValues, ast->operatorToken); - } } // check odd + ++ combinations diff --git a/src/libs/qmljs/qmljsstaticanalysismessage.cpp b/src/libs/qmljs/qmljsstaticanalysismessage.cpp index 98bff3a4b69..5b15e694281 100644 --- a/src/libs/qmljs/qmljsstaticanalysismessage.cpp +++ b/src/libs/qmljs/qmljsstaticanalysismessage.cpp @@ -229,8 +229,6 @@ StaticAnalysisMessages::StaticAnalysisMessages() Tr::tr("Hit maximum recursion limit when visiting AST.")); newMsg(ErrTypeIsInstantiatedRecursively, Error, Tr::tr("Type cannot be instantiated recursively (%1)."), 1); - newMsg(WarnLogicalValueDoesNotDependOnValues, Warning, - Tr::tr("Logical value does not depend on actual values.")); newMsg(ErrToManyComponentChildren, Error, Tr::tr("Components are only allowed to have a single child element.")); newMsg(WarnComponentRequiresChildren, Warning, diff --git a/src/libs/qmljs/qmljsstaticanalysismessage.h b/src/libs/qmljs/qmljsstaticanalysismessage.h index 01b3b52d698..97dd95c5eb9 100644 --- a/src/libs/qmljs/qmljsstaticanalysismessage.h +++ b/src/libs/qmljs/qmljsstaticanalysismessage.h @@ -109,7 +109,6 @@ enum Type { ErrShorterStringValueExpected = 322, ErrInvalidArrayValueLength = 323, ErrHitMaximumRecursion = 324, - WarnLogicalValueDoesNotDependOnValues = 325, ErrToManyComponentChildren = 326, WarnComponentRequiresChildren = 327, WarnDuplicateImport = 400, diff --git a/tests/auto/qml/codemodel/check/equality-checks.qml b/tests/auto/qml/codemodel/check/equality-checks.qml index 9355142df40..e24e8afad99 100644 --- a/tests/auto/qml/codemodel/check/equality-checks.qml +++ b/tests/auto/qml/codemodel/check/equality-checks.qml @@ -12,42 +12,30 @@ Rectangle { if (s == s) {} if (s == n) {} // 126 15 16 - if (s == N) {} // 325 15 16 - if (s == u) {} // 325 15 16 if (s == b) {} // 126 15 16 if (s == o) {} // 126 15 16 if (s == k) {} // 126 15 16 if (n == s) {} // 126 15 16 if (n == n) {} - if (n == N) {} // 325 15 16 - if (n == u) {} // 325 15 16 if (n == b) {} // 126 15 16 if (n == o) {} // 126 15 16 if (n == k) {} // 126 15 16 - if (N == s) {} // 325 15 16 - if (N == n) {} // 325 15 16 if (N == N) {} if (N == u) {} - if (N == b) {} // 325 15 16 if (N == o) {} if (N == k) {} // 126 15 16 - if (u == s) {} // 325 15 16 - if (u == n) {} // 325 15 16 if (u == N) {} if (u == u) {} - if (u == b) {} // 325 15 16 if (u == o) {} if (u == k) {} // 126 15 16 if (b == s) {} // 126 15 16 if (b == n) {} // 126 15 16 - if (b == N) {} // 325 15 16 - if (b == u) {} // 325 15 16 if (b == b) {} if (b == o) {} // 126 15 16 if (b == k) {} // 126 15 16 @@ -69,35 +57,19 @@ Rectangle { if (k == k) {} // 126 15 16 if (s === s) {} - if (s === n) {} // 325 15 17 - if (s === N) {} // 325 15 17 if (s === u) {} - if (s === b) {} // 325 15 17 - if (s === o) {} // 325 15 17 if (s === k) {} if (s !== s) {} - if (s !== n) {} // 325 15 17 - if (s !== N) {} // 325 15 17 if (s !== u) {} - if (s !== b) {} // 325 15 17 - if (s !== o) {} // 325 15 17 if (s !== k) {} - if (n === s) {} // 325 15 17 if (n === n) {} - if (n === N) {} // 325 15 17 if (n === u) {} - if (n === b) {} // 325 15 17 - if (n === o) {} // 325 15 17 if (n === k) {} - if (N === s) {} // 325 15 17 - if (N === n) {} // 325 15 17 if (N === N) {} if (N === u) {} - if (N === b) {} // 325 15 17 - if (N === o) {} // 325 15 17 if (N === k) {} if (u === s) {} @@ -108,21 +80,11 @@ Rectangle { if (u === o) {} if (u === k) {} - if (b === s) {} // 325 15 17 - if (b === n) {} // 325 15 17 - - if (b === N) {} // 325 15 17 if (b === u) {} if (b === b) {} - if (b === o) {} // 325 15 17 if (b === k) {} - if (o === s) {} // 325 15 17 - if (o === n) {} // 325 15 17 - if (o === N) {} // 325 15 17 if (o === u) {} - if (o === b) {} // 325 15 17 - if (o === o) {} // 325 15 17 if (o === k) {} if (k === s) {}