diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/ConvertObjectToDataObjectInspection.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/ConvertObjectToDataObjectInspection.kt index 532635eecdad..080e8c8be1ba 100644 --- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/ConvertObjectToDataObjectInspection.kt +++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/ConvertObjectToDataObjectInspection.kt @@ -97,7 +97,7 @@ private fun KtExpression.tryUnwrapElvisOrDoubleBang(context: Lazy): Boolean = when (val equals = ktObject.findEquals()) { is Function -> ktObjectFqn.value == equals.function.singleExpressionBody() - ?.asSafely()?.typeReference?.let { typeReference -> + ?.asSafely()?.takeUnless(KtIsExpression::isNegated)?.typeReference?.let { typeReference -> typeReference.analyze(BodyResolveMode.PARTIAL_NO_ADDITIONAL)[BindingContext.TYPE, typeReference]?.fqName } NonTrivialSuper -> false diff --git a/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java b/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java index 11b061f5db43..20acb2e88511 100644 --- a/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java +++ b/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java @@ -4015,6 +4015,11 @@ public abstract class LocalInspectionTestGenerated extends AbstractLocalInspecti runTest("testData/inspectionsLocal/convertObjectToDataObject/notCompatibleEquals.kt"); } + @TestMetadata("notCompatibleEquals2.kt") + public void testNotCompatibleEquals2() throws Exception { + runTest("testData/inspectionsLocal/convertObjectToDataObject/notCompatibleEquals2.kt"); + } + @TestMetadata("notCompatibleInheritedEquals.kt") public void testNotCompatibleInheritedEquals() throws Exception { runTest("testData/inspectionsLocal/convertObjectToDataObject/notCompatibleInheritedEquals.kt"); diff --git a/plugins/kotlin/idea/tests/testData/inspectionsLocal/convertObjectToDataObject/notCompatibleEquals2.kt b/plugins/kotlin/idea/tests/testData/inspectionsLocal/convertObjectToDataObject/notCompatibleEquals2.kt new file mode 100644 index 000000000000..61a59e0a8feb --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/inspectionsLocal/convertObjectToDataObject/notCompatibleEquals2.kt @@ -0,0 +1,6 @@ +// COMPILER_ARGUMENTS: -XXLanguage:+DataObjects +// PROBLEM: none +object Foo { + override fun toString(): String = "Foo" + override fun equals(other: Any?): Boolean = other !is Foo +}