AA: tests about equals on sealed/data class

^KT-54844 In Progress
diff --git a/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/components/callResolver/Fe10IdeNormalAnalysisSourceModuleResolveCallTestGenerated.java b/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/components/callResolver/Fe10IdeNormalAnalysisSourceModuleResolveCallTestGenerated.java
index 95ad300..eec6222 100644
--- a/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/components/callResolver/Fe10IdeNormalAnalysisSourceModuleResolveCallTestGenerated.java
+++ b/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/components/callResolver/Fe10IdeNormalAnalysisSourceModuleResolveCallTestGenerated.java
@@ -365,6 +365,24 @@
     }
 
     @Test
+    @TestMetadata("eqEqCall_fromDataClass.kt")
+    public void testEqEqCall_fromDataClass() throws Exception {
+        runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/eqEqCall_fromDataClass.kt");
+    }
+
+    @Test
+    @TestMetadata("eqEqCall_fromDataClass_overridden.kt")
+    public void testEqEqCall_fromDataClass_overridden() throws Exception {
+        runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/eqEqCall_fromDataClass_overridden.kt");
+    }
+
+    @Test
+    @TestMetadata("eqEqCall_fromSealedClass.kt")
+    public void testEqEqCall_fromSealedClass() throws Exception {
+        runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/eqEqCall_fromSealedClass.kt");
+    }
+
+    @Test
     @TestMetadata("eqEqCall_fromSuperType.kt")
     public void testEqEqCall_fromSuperType() throws Exception {
         runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/eqEqCall_fromSuperType.kt");
diff --git a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/callResolver/FirIdeNormalAnalysisSourceModuleResolveCallTestGenerated.java b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/callResolver/FirIdeNormalAnalysisSourceModuleResolveCallTestGenerated.java
index 453e953..60005ee 100644
--- a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/callResolver/FirIdeNormalAnalysisSourceModuleResolveCallTestGenerated.java
+++ b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/callResolver/FirIdeNormalAnalysisSourceModuleResolveCallTestGenerated.java
@@ -365,6 +365,24 @@
     }
 
     @Test
+    @TestMetadata("eqEqCall_fromDataClass.kt")
+    public void testEqEqCall_fromDataClass() throws Exception {
+        runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/eqEqCall_fromDataClass.kt");
+    }
+
+    @Test
+    @TestMetadata("eqEqCall_fromDataClass_overridden.kt")
+    public void testEqEqCall_fromDataClass_overridden() throws Exception {
+        runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/eqEqCall_fromDataClass_overridden.kt");
+    }
+
+    @Test
+    @TestMetadata("eqEqCall_fromSealedClass.kt")
+    public void testEqEqCall_fromSealedClass() throws Exception {
+        runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/eqEqCall_fromSealedClass.kt");
+    }
+
+    @Test
     @TestMetadata("eqEqCall_fromSuperType.kt")
     public void testEqEqCall_fromSuperType() throws Exception {
         runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/eqEqCall_fromSuperType.kt");
diff --git a/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/callResolver/FirStandaloneNormalAnalysisSourceModuleResolveCallTestGenerated.java b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/callResolver/FirStandaloneNormalAnalysisSourceModuleResolveCallTestGenerated.java
index b83ebcb..3ec1aa6 100644
--- a/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/callResolver/FirStandaloneNormalAnalysisSourceModuleResolveCallTestGenerated.java
+++ b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/callResolver/FirStandaloneNormalAnalysisSourceModuleResolveCallTestGenerated.java
@@ -365,6 +365,24 @@
     }
 
     @Test
+    @TestMetadata("eqEqCall_fromDataClass.kt")
+    public void testEqEqCall_fromDataClass() throws Exception {
+        runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/eqEqCall_fromDataClass.kt");
+    }
+
+    @Test
+    @TestMetadata("eqEqCall_fromDataClass_overridden.kt")
+    public void testEqEqCall_fromDataClass_overridden() throws Exception {
+        runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/eqEqCall_fromDataClass_overridden.kt");
+    }
+
+    @Test
+    @TestMetadata("eqEqCall_fromSealedClass.kt")
+    public void testEqEqCall_fromSealedClass() throws Exception {
+        runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/eqEqCall_fromSealedClass.kt");
+    }
+
+    @Test
     @TestMetadata("eqEqCall_fromSuperType.kt")
     public void testEqEqCall_fromSuperType() throws Exception {
         runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/eqEqCall_fromSuperType.kt");
diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCall/eqEqCall_fromDataClass.descriptors.txt b/analysis/analysis-api/testData/components/callResolver/resolveCall/eqEqCall_fromDataClass.descriptors.txt
new file mode 100644
index 0000000..1e2b729
--- /dev/null
+++ b/analysis/analysis-api/testData/components/callResolver/resolveCall/eqEqCall_fromDataClass.descriptors.txt
@@ -0,0 +1,31 @@
+KtSuccessCallInfo:
+  call = KtSimpleFunctionCall:
+    isImplicitInvoke = false
+    partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
+      dispatchReceiver = KtExplicitReceiverValue:
+        expression = d1
+        isSafeNavigation = false
+        type = D
+      extensionReceiver = null
+      signature = KtFunctionLikeSignature:
+        receiverType = null
+        returnType = kotlin.Boolean
+        symbol = /D.equals(<dispatch receiver>: D, other: kotlin.Any?): kotlin.Boolean
+        valueParameters = [
+          KtVariableLikeSignature:
+            name = other
+            receiverType = null
+            returnType = kotlin.Any?
+            symbol = other: kotlin.Any?
+            callableIdIfNonLocal = null
+        ]
+        callableIdIfNonLocal = /D.equals
+    typeArgumentsMapping = {}
+    argumentMapping = {
+      d2 -> (KtVariableLikeSignature:
+        name = other
+        receiverType = null
+        returnType = kotlin.Any?
+        symbol = other: kotlin.Any?
+        callableIdIfNonLocal = null)
+    }
diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCall/eqEqCall_fromDataClass.kt b/analysis/analysis-api/testData/components/callResolver/resolveCall/eqEqCall_fromDataClass.kt
new file mode 100644
index 0000000..b58e528
--- /dev/null
+++ b/analysis/analysis-api/testData/components/callResolver/resolveCall/eqEqCall_fromDataClass.kt
@@ -0,0 +1,6 @@
+data class D(val id: String)
+
+// TODO(KT-54844): need to create KtSymbol for data class synthetic members, such as equals/hashCode/toString
+fun test(d1: D, d2: D) {
+    <expr>d1 == d2</expr>
+}
\ No newline at end of file
diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCall/eqEqCall_fromDataClass.txt b/analysis/analysis-api/testData/components/callResolver/resolveCall/eqEqCall_fromDataClass.txt
new file mode 100644
index 0000000..7b6ab47
--- /dev/null
+++ b/analysis/analysis-api/testData/components/callResolver/resolveCall/eqEqCall_fromDataClass.txt
@@ -0,0 +1,31 @@
+KtSuccessCallInfo:
+  call = KtSimpleFunctionCall:
+    isImplicitInvoke = false
+    partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
+      dispatchReceiver = KtExplicitReceiverValue:
+        expression = d1
+        isSafeNavigation = false
+        type = D
+      extensionReceiver = null
+      signature = KtFunctionLikeSignature:
+        receiverType = null
+        returnType = kotlin.Boolean
+        symbol = kotlin/Any.equals(<dispatch receiver>: kotlin.Any, other: kotlin.Any?): kotlin.Boolean
+        valueParameters = [
+          KtVariableLikeSignature:
+            name = other
+            receiverType = null
+            returnType = kotlin.Any?
+            symbol = other: kotlin.Any?
+            callableIdIfNonLocal = null
+        ]
+        callableIdIfNonLocal = kotlin/Any.equals
+    typeArgumentsMapping = {}
+    argumentMapping = {
+      d2 -> (KtVariableLikeSignature:
+        name = other
+        receiverType = null
+        returnType = kotlin.Any?
+        symbol = other: kotlin.Any?
+        callableIdIfNonLocal = null)
+    }
diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCall/eqEqCall_fromDataClass_overridden.kt b/analysis/analysis-api/testData/components/callResolver/resolveCall/eqEqCall_fromDataClass_overridden.kt
new file mode 100644
index 0000000..381ff50
--- /dev/null
+++ b/analysis/analysis-api/testData/components/callResolver/resolveCall/eqEqCall_fromDataClass_overridden.kt
@@ -0,0 +1,9 @@
+data class D(val id: String) {
+    override fun equals(other: Any?): Boolean {
+        return (other as? D)?.id == id
+    }
+}
+
+fun test(d1: D, d2: D) {
+    <expr>d1 == d2</expr>
+}
\ No newline at end of file
diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCall/eqEqCall_fromDataClass_overridden.txt b/analysis/analysis-api/testData/components/callResolver/resolveCall/eqEqCall_fromDataClass_overridden.txt
new file mode 100644
index 0000000..1e2b729
--- /dev/null
+++ b/analysis/analysis-api/testData/components/callResolver/resolveCall/eqEqCall_fromDataClass_overridden.txt
@@ -0,0 +1,31 @@
+KtSuccessCallInfo:
+  call = KtSimpleFunctionCall:
+    isImplicitInvoke = false
+    partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
+      dispatchReceiver = KtExplicitReceiverValue:
+        expression = d1
+        isSafeNavigation = false
+        type = D
+      extensionReceiver = null
+      signature = KtFunctionLikeSignature:
+        receiverType = null
+        returnType = kotlin.Boolean
+        symbol = /D.equals(<dispatch receiver>: D, other: kotlin.Any?): kotlin.Boolean
+        valueParameters = [
+          KtVariableLikeSignature:
+            name = other
+            receiverType = null
+            returnType = kotlin.Any?
+            symbol = other: kotlin.Any?
+            callableIdIfNonLocal = null
+        ]
+        callableIdIfNonLocal = /D.equals
+    typeArgumentsMapping = {}
+    argumentMapping = {
+      d2 -> (KtVariableLikeSignature:
+        name = other
+        receiverType = null
+        returnType = kotlin.Any?
+        symbol = other: kotlin.Any?
+        callableIdIfNonLocal = null)
+    }
diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCall/eqEqCall_fromSealedClass.kt b/analysis/analysis-api/testData/components/callResolver/resolveCall/eqEqCall_fromSealedClass.kt
new file mode 100644
index 0000000..33ca3ce
--- /dev/null
+++ b/analysis/analysis-api/testData/components/callResolver/resolveCall/eqEqCall_fromSealedClass.kt
@@ -0,0 +1,8 @@
+sealed class SealedClass {
+    data class ClassOne(val data: Int) : SealedClass()
+    data class ClassTwo(val value: String) : SealedClass()
+
+    fun test(s1: SealedClass, s2: SealedClass) {
+        <expr>s1 == s2</expr>
+    }
+}
diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCall/eqEqCall_fromSealedClass.txt b/analysis/analysis-api/testData/components/callResolver/resolveCall/eqEqCall_fromSealedClass.txt
new file mode 100644
index 0000000..57d860a
--- /dev/null
+++ b/analysis/analysis-api/testData/components/callResolver/resolveCall/eqEqCall_fromSealedClass.txt
@@ -0,0 +1,31 @@
+KtSuccessCallInfo:
+  call = KtSimpleFunctionCall:
+    isImplicitInvoke = false
+    partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
+      dispatchReceiver = KtExplicitReceiverValue:
+        expression = s1
+        isSafeNavigation = false
+        type = SealedClass
+      extensionReceiver = null
+      signature = KtFunctionLikeSignature:
+        receiverType = null
+        returnType = kotlin.Boolean
+        symbol = kotlin/Any.equals(<dispatch receiver>: kotlin.Any, other: kotlin.Any?): kotlin.Boolean
+        valueParameters = [
+          KtVariableLikeSignature:
+            name = other
+            receiverType = null
+            returnType = kotlin.Any?
+            symbol = other: kotlin.Any?
+            callableIdIfNonLocal = null
+        ]
+        callableIdIfNonLocal = kotlin/Any.equals
+    typeArgumentsMapping = {}
+    argumentMapping = {
+      s2 -> (KtVariableLikeSignature:
+        name = other
+        receiverType = null
+        returnType = kotlin.Any?
+        symbol = other: kotlin.Any?
+        callableIdIfNonLocal = null)
+    }