diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirEqualityCompatibilityChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirEqualityCompatibilityChecker.kt index fb157705367..8dc0661bdcd 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirEqualityCompatibilityChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirEqualityCompatibilityChecker.kt @@ -80,6 +80,7 @@ object FirEqualityCompatibilityChecker : FirEqualityOperatorCallChecker() { private fun checkEqualityApplicability(l: TypeInfo, r: TypeInfo, context: CheckerContext): Applicability { val oneIsBuiltin = l.isBuiltin || r.isBuiltin + val oneIsIdentityLess = l.isIdentityLess || r.isIdentityLess // The compiler should only check comparisons // when builtins are involved. @@ -87,7 +88,7 @@ object FirEqualityCompatibilityChecker : FirEqualityOperatorCallChecker() { // the list of special fqNames described in RULES1 return when { - oneIsBuiltin && shouldReportAsPerRules1(l, r, context) -> getInapplicabilityFor(l, r) + (oneIsBuiltin || oneIsIdentityLess) && shouldReportAsPerRules1(l, r, context) -> getInapplicabilityFor(l, r) else -> Applicability.APPLICABLE } } diff --git a/compiler/testData/diagnostics/testsWithStdLib/equalityCompatibilityCommonCases.fir.kt b/compiler/testData/diagnostics/testsWithStdLib/equalityCompatibilityCommonCases.fir.kt index f817c853084..da89a77159f 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/equalityCompatibilityCommonCases.fir.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/equalityCompatibilityCommonCases.fir.kt @@ -86,13 +86,13 @@ fun incompatibleIdentityRegardlessNullabilitySmartCast(a: Any?, b: Any?) { } fun incompatibleIdentityRegardlessNullabilityWithValueClasses(c: C?, d: D?) { - c == d + c == d c === d } fun incompatibleIdentityRegardlessNullabilityWithValueClassesSmartCast(c: Any?, d: Any?) { if (c is C? && d is D?) { - c == d + c == d c === d } }