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)
+ }