diff --git a/idea/src/org/jetbrains/kotlin/idea/inspections/SuspiciousEqualsCombination.kt b/idea/src/org/jetbrains/kotlin/idea/inspections/SuspiciousEqualsCombination.kt
index b42dfc69c61..9e720fc356c 100644
--- a/idea/src/org/jetbrains/kotlin/idea/inspections/SuspiciousEqualsCombination.kt
+++ b/idea/src/org/jetbrains/kotlin/idea/inspections/SuspiciousEqualsCombination.kt
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.idea.inspections
import com.intellij.codeInspection.LocalInspectionToolSession
import com.intellij.codeInspection.ProblemHighlightType
import com.intellij.codeInspection.ProblemsHolder
+import org.jetbrains.kotlin.idea.intentions.branchedTransformations.isNullExpression
import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.psi.*
@@ -29,12 +30,16 @@ class SuspiciousEqualsCombination : AbstractKotlinInspection() {
private fun KtBinaryExpression.parseBinary(pair: ComparisonOperands = ComparisonOperands()): ComparisonOperands {
when (operationToken) {
KtTokens.EQEQ, KtTokens.EXCLEQ -> {
- (left as? KtNameReferenceExpression)?.let(pair.eqEqOperands::add)
- (right as? KtNameReferenceExpression)?.let(pair.eqEqOperands::add)
+ if (!left.isNullExpression() && !right.isNullExpression()) {
+ (left as? KtNameReferenceExpression)?.let(pair.eqEqOperands::add)
+ (right as? KtNameReferenceExpression)?.let(pair.eqEqOperands::add)
+ }
}
KtTokens.EQEQEQ, KtTokens.EXCLEQEQEQ -> {
- (left as? KtNameReferenceExpression)?.let(pair.eqEqEqOperands::add)
- (right as? KtNameReferenceExpression)?.let(pair.eqEqEqOperands::add)
+ if (!left.isNullExpression() && !right.isNullExpression()) {
+ (left as? KtNameReferenceExpression)?.let(pair.eqEqEqOperands::add)
+ (right as? KtNameReferenceExpression)?.let(pair.eqEqEqOperands::add)
+ }
}
KtTokens.ANDAND, KtTokens.OROR -> {
right?.parseExpression(pair)
diff --git a/idea/testData/inspections/suspiciousEqualsCombination/inspectionData/expected.xml b/idea/testData/inspections/suspiciousEqualsCombination/inspectionData/expected.xml
index 39362e13dcf..4f22b12b617 100644
--- a/idea/testData/inspections/suspiciousEqualsCombination/inspectionData/expected.xml
+++ b/idea/testData/inspections/suspiciousEqualsCombination/inspectionData/expected.xml
@@ -34,4 +34,13 @@
Suspicious combination of == and ===
Suspicious combination of == and ===
+
+
+ test.kt
+ 18
+ light_idea_test_case
+
+ Suspicious combination of == and ===
+ Suspicious combination of == and ===
+
\ No newline at end of file
diff --git a/idea/testData/inspections/suspiciousEqualsCombination/test.kt b/idea/testData/inspections/suspiciousEqualsCombination/test.kt
index a9559043972..b9d2aa66cc0 100644
--- a/idea/testData/inspections/suspiciousEqualsCombination/test.kt
+++ b/idea/testData/inspections/suspiciousEqualsCombination/test.kt
@@ -7,6 +7,15 @@ object Main {
if (type === CONST1 || type == CONST2 && !(type === CONST3)) return
if (type === CONST1 || type1 == CONST2 && type === CONST3) return
if (type === CONST1 || type1 == CONST1 && type === CONST3) return
+
+ val type2: Main? = null
+ if (type2 == null || type === type2) return
+
+ val type3: Main? = null
+ if (type3 === null || type == type3) return
+
+ val type4: Main? = null
+ if (type4 == null || type === type2 || type1 == type) return
}
val CONST1 = Main;