diff --git a/idea/resources/META-INF/plugin-common.xml b/idea/resources/META-INF/plugin-common.xml
index f670c15af41..92da75bc49c 100644
--- a/idea/resources/META-INF/plugin-common.xml
+++ b/idea/resources/META-INF/plugin-common.xml
@@ -3389,6 +3389,15 @@
language="kotlin"
/>
+
+
diff --git a/idea/resources/inspectionDescriptions/KotlinEqualsBetweenInconvertibleTypes.html b/idea/resources/inspectionDescriptions/KotlinEqualsBetweenInconvertibleTypes.html
new file mode 100644
index 00000000000..794e3f4a930
--- /dev/null
+++ b/idea/resources/inspectionDescriptions/KotlinEqualsBetweenInconvertibleTypes.html
@@ -0,0 +1,5 @@
+
+
+This inspection reports equals() between objects of inconvertible primitive / enum / string types.
+
+
\ No newline at end of file
diff --git a/idea/src/org/jetbrains/kotlin/idea/inspections/KotlinEqualsBetweenInconvertibleTypesInspection.kt b/idea/src/org/jetbrains/kotlin/idea/inspections/KotlinEqualsBetweenInconvertibleTypesInspection.kt
new file mode 100644
index 00000000000..f002be94526
--- /dev/null
+++ b/idea/src/org/jetbrains/kotlin/idea/inspections/KotlinEqualsBetweenInconvertibleTypesInspection.kt
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
+ * that can be found in the license/LICENSE.txt file.
+ */
+
+package org.jetbrains.kotlin.idea.inspections
+
+import com.intellij.codeInspection.ProblemsHolder
+import org.jetbrains.kotlin.builtins.KotlinBuiltIns
+import org.jetbrains.kotlin.idea.caches.resolve.analyze
+import org.jetbrains.kotlin.psi.KtExpression
+import org.jetbrains.kotlin.psi.KtSimpleNameExpression
+import org.jetbrains.kotlin.psi.callExpressionVisitor
+import org.jetbrains.kotlin.psi.psiUtil.getQualifiedExpressionForSelector
+import org.jetbrains.kotlin.resolve.BindingContext
+import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
+import org.jetbrains.kotlin.types.KotlinType
+import org.jetbrains.kotlin.types.typeUtil.isEnum
+import org.jetbrains.kotlin.types.typeUtil.makeNotNullable
+import org.jetbrains.kotlin.util.OperatorNameConventions
+
+class KotlinEqualsBetweenInconvertibleTypesInspection : AbstractKotlinInspection() {
+ override fun buildVisitor(holder: ProblemsHolder, isOnTheFly: Boolean) = callExpressionVisitor(fun(call) {
+ val callee = call.calleeExpression as? KtSimpleNameExpression ?: return
+ val identifier = callee.getReferencedNameAsName()
+ if (identifier != OperatorNameConventions.EQUALS) return
+ val receiver = call.getQualifiedExpressionForSelector()?.receiverExpression ?: return
+ val argument = call.valueArguments.singleOrNull()?.getArgumentExpression() ?: return
+ if (call.analyze(BodyResolveMode.PARTIAL).isInconvertibleTypes(receiver, argument)) {
+ holder.registerProblem(callee, "'equals()' between objects of inconvertible types")
+ }
+ })
+
+ companion object {
+ fun BindingContext.isInconvertibleTypes(expr1: KtExpression?, expr2: KtExpression?): Boolean {
+ val type1 = expr1?.getTargetType(this) ?: return false
+ val type2 = expr2?.getTargetType(this) ?: return false
+ return type1 != type2
+ }
+
+ private fun KtExpression.getTargetType(context: BindingContext): KotlinType? {
+ return context.getType(this)?.takeIf {
+ KotlinBuiltIns.isPrimitiveTypeOrNullablePrimitiveType(it) || KotlinBuiltIns.isStringOrNullableString(it) || it.isEnum()
+ }?.makeNotNullable()
+ }
+ }
+}
diff --git a/idea/src/org/jetbrains/kotlin/idea/inspections/conventionNameCalls/ReplaceCallWithBinaryOperatorInspection.kt b/idea/src/org/jetbrains/kotlin/idea/inspections/conventionNameCalls/ReplaceCallWithBinaryOperatorInspection.kt
index 494936194bb..f00e00cc78d 100644
--- a/idea/src/org/jetbrains/kotlin/idea/inspections/conventionNameCalls/ReplaceCallWithBinaryOperatorInspection.kt
+++ b/idea/src/org/jetbrains/kotlin/idea/inspections/conventionNameCalls/ReplaceCallWithBinaryOperatorInspection.kt
@@ -28,6 +28,7 @@ import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade
import org.jetbrains.kotlin.idea.caches.resolve.resolveToCall
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
import org.jetbrains.kotlin.idea.inspections.AbstractApplicabilityBasedInspection
+import org.jetbrains.kotlin.idea.inspections.KotlinEqualsBetweenInconvertibleTypesInspection
import org.jetbrains.kotlin.idea.intentions.callExpression
import org.jetbrains.kotlin.idea.intentions.conventionNameCalls.isAnyEquals
import org.jetbrains.kotlin.idea.intentions.isOperatorOrCompatible
@@ -155,6 +156,11 @@ class ReplaceCallWithBinaryOperatorInspection : AbstractApplicabilityBasedInspec
return when (identifier) {
OperatorNameConventions.EQUALS -> {
if (!dotQualified.isAnyEquals()) return null
+ with(KotlinEqualsBetweenInconvertibleTypesInspection) {
+ val receiver = dotQualified.receiverExpression
+ val argument = dotQualified.callExpression?.valueArguments?.singleOrNull()?.getArgumentExpression()
+ if (dotQualified.analyze(BodyResolveMode.PARTIAL).isInconvertibleTypes(receiver, argument)) return null
+ }
val prefixExpression = dotQualified.getWrappingPrefixExpressionIfAny()
if (prefixExpression != null && prefixExpression.operationToken == KtTokens.EXCL) KtTokens.EXCLEQ
else KtTokens.EQEQ
diff --git a/idea/testData/inspectionsLocal/conventionNameCalls/replaceCallWithBinaryOperator/equalsBetweenInconvertibleTypes.kt b/idea/testData/inspectionsLocal/conventionNameCalls/replaceCallWithBinaryOperator/equalsBetweenInconvertibleTypes.kt
new file mode 100644
index 00000000000..b11c0309389
--- /dev/null
+++ b/idea/testData/inspectionsLocal/conventionNameCalls/replaceCallWithBinaryOperator/equalsBetweenInconvertibleTypes.kt
@@ -0,0 +1,3 @@
+// PROBLEM: none
+
+val x = 2.equals("")
\ No newline at end of file
diff --git a/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/.inspection b/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/.inspection
new file mode 100644
index 00000000000..3c8ce3740ae
--- /dev/null
+++ b/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/.inspection
@@ -0,0 +1 @@
+org.jetbrains.kotlin.idea.inspections.KotlinEqualsBetweenInconvertibleTypesInspection
\ No newline at end of file
diff --git a/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/enumEqEnum.kt b/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/enumEqEnum.kt
new file mode 100644
index 00000000000..868c8402870
--- /dev/null
+++ b/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/enumEqEnum.kt
@@ -0,0 +1,8 @@
+// PROBLEM: none
+
+fun test(x: E1, y: E1): Boolean {
+ return x.equals(y)
+}
+
+enum class E1
+
diff --git a/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/enumEqEnum2.kt b/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/enumEqEnum2.kt
new file mode 100644
index 00000000000..711f36787c6
--- /dev/null
+++ b/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/enumEqEnum2.kt
@@ -0,0 +1,9 @@
+// FIX: none
+
+fun test(x: E1, y: E2): Boolean {
+ return x.equals(y)
+}
+
+enum class E1
+
+enum class E2
\ No newline at end of file
diff --git a/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/enumEqInt.kt b/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/enumEqInt.kt
new file mode 100644
index 00000000000..6b40502047a
--- /dev/null
+++ b/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/enumEqInt.kt
@@ -0,0 +1,7 @@
+// FIX: none
+
+fun test(x: E1, y: Int): Boolean {
+ return x.equals(y)
+}
+
+enum class E1
\ No newline at end of file
diff --git a/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/enumEqString.kt b/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/enumEqString.kt
new file mode 100644
index 00000000000..7bfca80381e
--- /dev/null
+++ b/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/enumEqString.kt
@@ -0,0 +1,7 @@
+// FIX: none
+
+fun test(x: E1, y: String): Boolean {
+ return x.equals(y)
+}
+
+enum class E1
\ No newline at end of file
diff --git a/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/enumEqUserType.kt b/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/enumEqUserType.kt
new file mode 100644
index 00000000000..10d63634262
--- /dev/null
+++ b/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/enumEqUserType.kt
@@ -0,0 +1,9 @@
+// PROBLEM: none
+
+fun test(x: E1, y: Foo): Boolean {
+ return x.equals(y)
+}
+
+class Foo
+
+enum class E1
\ No newline at end of file
diff --git a/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/intEqEnum.kt b/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/intEqEnum.kt
new file mode 100644
index 00000000000..7b4a68cc614
--- /dev/null
+++ b/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/intEqEnum.kt
@@ -0,0 +1,7 @@
+// FIX: none
+
+fun test(x: Int, y: E1): Boolean {
+ return x.equals(y)
+}
+
+enum class E1
\ No newline at end of file
diff --git a/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/intEqInt.kt b/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/intEqInt.kt
new file mode 100644
index 00000000000..75ea4c94990
--- /dev/null
+++ b/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/intEqInt.kt
@@ -0,0 +1,5 @@
+// PROBLEM: none
+
+fun test(x: Int, y: Int): Boolean {
+ return x.equals(y)
+}
\ No newline at end of file
diff --git a/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/intEqLong.kt b/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/intEqLong.kt
new file mode 100644
index 00000000000..a02372977d6
--- /dev/null
+++ b/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/intEqLong.kt
@@ -0,0 +1,5 @@
+// FIX: none
+
+fun test(x: Int, y: Long): Boolean {
+ return x.equals(y)
+}
\ No newline at end of file
diff --git a/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/intEqString.kt b/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/intEqString.kt
new file mode 100644
index 00000000000..d56f00e3b8c
--- /dev/null
+++ b/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/intEqString.kt
@@ -0,0 +1,5 @@
+// FIX: none
+
+fun test(x: Int, y: String): Boolean {
+ return x.equals(y)
+}
\ No newline at end of file
diff --git a/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/intEqUserType.kt b/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/intEqUserType.kt
new file mode 100644
index 00000000000..779234bcbef
--- /dev/null
+++ b/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/intEqUserType.kt
@@ -0,0 +1,7 @@
+// PROBLEM: none
+
+fun test(x: Int, y: Foo): Boolean {
+ return x.equals(y)
+}
+
+class Foo
\ No newline at end of file
diff --git a/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/nullableEnumEqString.kt b/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/nullableEnumEqString.kt
new file mode 100644
index 00000000000..e8b40b2fdf1
--- /dev/null
+++ b/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/nullableEnumEqString.kt
@@ -0,0 +1,6 @@
+// FIX: none
+enum class E1
+
+fun test(x: E1?, y: String): Boolean? {
+ return x?.equals(y)
+}
\ No newline at end of file
diff --git a/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/nullableIntEqString.kt b/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/nullableIntEqString.kt
new file mode 100644
index 00000000000..49fbf00b4e6
--- /dev/null
+++ b/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/nullableIntEqString.kt
@@ -0,0 +1,4 @@
+// FIX: none
+fun test(x: Int?, y: String): Boolean? {
+ return x?.equals(y)
+}
\ No newline at end of file
diff --git a/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/nullableStringEqInt.kt b/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/nullableStringEqInt.kt
new file mode 100644
index 00000000000..fdb2c4af94d
--- /dev/null
+++ b/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/nullableStringEqInt.kt
@@ -0,0 +1,4 @@
+// FIX: none
+fun test(x: String?, y: Int): Boolean? {
+ return x?.equals(y)
+}
\ No newline at end of file
diff --git a/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/nullableStringEqString.kt b/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/nullableStringEqString.kt
new file mode 100644
index 00000000000..ddb761ebc2f
--- /dev/null
+++ b/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/nullableStringEqString.kt
@@ -0,0 +1,4 @@
+// PROBLEM: none
+fun test() {
+ System.getProperty("some")?.equals("true")
+}
\ No newline at end of file
diff --git a/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/stringEqEnum.kt b/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/stringEqEnum.kt
new file mode 100644
index 00000000000..f3d8403aad5
--- /dev/null
+++ b/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/stringEqEnum.kt
@@ -0,0 +1,7 @@
+// FIX: none
+
+fun test(x: String, y: E1): Boolean {
+ return x.equals(y)
+}
+
+enum class E1
\ No newline at end of file
diff --git a/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/stringEqInt.kt b/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/stringEqInt.kt
new file mode 100644
index 00000000000..caac7259221
--- /dev/null
+++ b/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/stringEqInt.kt
@@ -0,0 +1,5 @@
+// FIX: none
+
+fun test(x: String, y: Int): Boolean {
+ return x.equals(y)
+}
diff --git a/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/stringEqNullableEnum.kt b/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/stringEqNullableEnum.kt
new file mode 100644
index 00000000000..c4e39c9ebb7
--- /dev/null
+++ b/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/stringEqNullableEnum.kt
@@ -0,0 +1,6 @@
+// FIX: none
+enum class E1
+
+fun test(x: String, y: E1?): Boolean? {
+ return x.equals(y)
+}
\ No newline at end of file
diff --git a/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/stringEqNullableInt.kt b/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/stringEqNullableInt.kt
new file mode 100644
index 00000000000..937a871f427
--- /dev/null
+++ b/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/stringEqNullableInt.kt
@@ -0,0 +1,4 @@
+// FIX: none
+fun test(x: String, y: Int?): Boolean? {
+ return x.equals(y)
+}
\ No newline at end of file
diff --git a/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/stringEqNullableString.kt b/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/stringEqNullableString.kt
new file mode 100644
index 00000000000..ce9ad1a9e62
--- /dev/null
+++ b/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/stringEqNullableString.kt
@@ -0,0 +1,4 @@
+// PROBLEM: none
+fun test(x: String, y: String?): Boolean? {
+ return x.equals(y)
+}
\ No newline at end of file
diff --git a/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/stringEqString.kt b/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/stringEqString.kt
new file mode 100644
index 00000000000..340723f1256
--- /dev/null
+++ b/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/stringEqString.kt
@@ -0,0 +1,5 @@
+// PROBLEM: none
+
+fun test(x: String, y: String): Boolean {
+ return x.equals(y)
+}
\ No newline at end of file
diff --git a/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/stringEqUserType.kt b/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/stringEqUserType.kt
new file mode 100644
index 00000000000..1bce5a660db
--- /dev/null
+++ b/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/stringEqUserType.kt
@@ -0,0 +1,7 @@
+// PROBLEM: none
+
+fun test(x: String, y: Foo): Boolean {
+ return x.equals(y)
+}
+
+class Foo
\ No newline at end of file
diff --git a/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/userTypeEqInt.kt b/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/userTypeEqInt.kt
new file mode 100644
index 00000000000..6af6c2cfb4b
--- /dev/null
+++ b/idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/userTypeEqInt.kt
@@ -0,0 +1,7 @@
+// PROBLEM: none
+
+fun test(x: Foo, y: Int): Boolean {
+ return x.equals(y)
+}
+
+class Foo
\ No newline at end of file
diff --git a/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java
index ac03d185338..8fbc501bb4e 100644
--- a/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java
+++ b/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java
@@ -2492,6 +2492,11 @@ public class LocalInspectionTestGenerated extends AbstractLocalInspectionTest {
runTest("idea/testData/inspectionsLocal/conventionNameCalls/replaceCallWithBinaryOperator/equals.kt");
}
+ @TestMetadata("equalsBetweenInconvertibleTypes.kt")
+ public void testEqualsBetweenInconvertibleTypes() throws Exception {
+ runTest("idea/testData/inspectionsLocal/conventionNameCalls/replaceCallWithBinaryOperator/equalsBetweenInconvertibleTypes.kt");
+ }
+
@TestMetadata("equalsCompareTo.kt")
public void testEqualsCompareTo() throws Exception {
runTest("idea/testData/inspectionsLocal/conventionNameCalls/replaceCallWithBinaryOperator/equalsCompareTo.kt");
@@ -3608,6 +3613,129 @@ public class LocalInspectionTestGenerated extends AbstractLocalInspectionTest {
}
}
+ @TestMetadata("idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes")
+ @TestDataPath("$PROJECT_ROOT")
+ @RunWith(JUnit3RunnerWithInners.class)
+ public static class EqualsBetweenInconvertibleTypes extends AbstractLocalInspectionTest {
+ private void runTest(String testDataFilePath) throws Exception {
+ KotlinTestUtils.runTest(this::doTest, TargetBackend.ANY, testDataFilePath);
+ }
+
+ public void testAllFilesPresentInEqualsBetweenInconvertibleTypes() throws Exception {
+ KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes"), Pattern.compile("^([\\w\\-_]+)\\.(kt|kts)$"), TargetBackend.ANY, true);
+ }
+
+ @TestMetadata("enumEqEnum.kt")
+ public void testEnumEqEnum() throws Exception {
+ runTest("idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/enumEqEnum.kt");
+ }
+
+ @TestMetadata("enumEqEnum2.kt")
+ public void testEnumEqEnum2() throws Exception {
+ runTest("idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/enumEqEnum2.kt");
+ }
+
+ @TestMetadata("enumEqInt.kt")
+ public void testEnumEqInt() throws Exception {
+ runTest("idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/enumEqInt.kt");
+ }
+
+ @TestMetadata("enumEqString.kt")
+ public void testEnumEqString() throws Exception {
+ runTest("idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/enumEqString.kt");
+ }
+
+ @TestMetadata("enumEqUserType.kt")
+ public void testEnumEqUserType() throws Exception {
+ runTest("idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/enumEqUserType.kt");
+ }
+
+ @TestMetadata("intEqEnum.kt")
+ public void testIntEqEnum() throws Exception {
+ runTest("idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/intEqEnum.kt");
+ }
+
+ @TestMetadata("intEqInt.kt")
+ public void testIntEqInt() throws Exception {
+ runTest("idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/intEqInt.kt");
+ }
+
+ @TestMetadata("intEqLong.kt")
+ public void testIntEqLong() throws Exception {
+ runTest("idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/intEqLong.kt");
+ }
+
+ @TestMetadata("intEqString.kt")
+ public void testIntEqString() throws Exception {
+ runTest("idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/intEqString.kt");
+ }
+
+ @TestMetadata("intEqUserType.kt")
+ public void testIntEqUserType() throws Exception {
+ runTest("idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/intEqUserType.kt");
+ }
+
+ @TestMetadata("nullableEnumEqString.kt")
+ public void testNullableEnumEqString() throws Exception {
+ runTest("idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/nullableEnumEqString.kt");
+ }
+
+ @TestMetadata("nullableIntEqString.kt")
+ public void testNullableIntEqString() throws Exception {
+ runTest("idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/nullableIntEqString.kt");
+ }
+
+ @TestMetadata("nullableStringEqInt.kt")
+ public void testNullableStringEqInt() throws Exception {
+ runTest("idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/nullableStringEqInt.kt");
+ }
+
+ @TestMetadata("nullableStringEqString.kt")
+ public void testNullableStringEqString() throws Exception {
+ runTest("idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/nullableStringEqString.kt");
+ }
+
+ @TestMetadata("stringEqEnum.kt")
+ public void testStringEqEnum() throws Exception {
+ runTest("idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/stringEqEnum.kt");
+ }
+
+ @TestMetadata("stringEqInt.kt")
+ public void testStringEqInt() throws Exception {
+ runTest("idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/stringEqInt.kt");
+ }
+
+ @TestMetadata("stringEqNullableEnum.kt")
+ public void testStringEqNullableEnum() throws Exception {
+ runTest("idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/stringEqNullableEnum.kt");
+ }
+
+ @TestMetadata("stringEqNullableInt.kt")
+ public void testStringEqNullableInt() throws Exception {
+ runTest("idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/stringEqNullableInt.kt");
+ }
+
+ @TestMetadata("stringEqNullableString.kt")
+ public void testStringEqNullableString() throws Exception {
+ runTest("idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/stringEqNullableString.kt");
+ }
+
+ @TestMetadata("stringEqString.kt")
+ public void testStringEqString() throws Exception {
+ runTest("idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/stringEqString.kt");
+ }
+
+ @TestMetadata("stringEqUserType.kt")
+ public void testStringEqUserType() throws Exception {
+ runTest("idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/stringEqUserType.kt");
+ }
+
+ @TestMetadata("userTypeEqInt.kt")
+ public void testUserTypeEqInt() throws Exception {
+ runTest("idea/testData/inspectionsLocal/equalsBetweenInconvertibleTypes/userTypeEqInt.kt");
+ }
+ }
+
@TestMetadata("idea/testData/inspectionsLocal/explicitThis")
@TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)