From b2e239a5423d957952c4263a85dcbb1bf30981a0 Mon Sep 17 00:00:00 2001 From: Jinseong Jeon Date: Tue, 20 Sep 2022 14:10:53 -0700 Subject: [PATCH] AA: tests about equals on sealed/data class ^KT-54844 In Progress --- ...sSourceModuleResolveCallTestGenerated.java | 18 +++++++++++ ...sSourceModuleResolveCallTestGenerated.java | 18 +++++++++++ ...sSourceModuleResolveCallTestGenerated.java | 18 +++++++++++ .../eqEqCall_fromDataClass.descriptors.txt | 31 +++++++++++++++++++ .../resolveCall/eqEqCall_fromDataClass.kt | 6 ++++ .../resolveCall/eqEqCall_fromDataClass.txt | 31 +++++++++++++++++++ .../eqEqCall_fromDataClass_overridden.kt | 9 ++++++ .../eqEqCall_fromDataClass_overridden.txt | 31 +++++++++++++++++++ .../resolveCall/eqEqCall_fromSealedClass.kt | 8 +++++ .../resolveCall/eqEqCall_fromSealedClass.txt | 31 +++++++++++++++++++ 10 files changed, 201 insertions(+) create mode 100644 analysis/analysis-api/testData/components/callResolver/resolveCall/eqEqCall_fromDataClass.descriptors.txt create mode 100644 analysis/analysis-api/testData/components/callResolver/resolveCall/eqEqCall_fromDataClass.kt create mode 100644 analysis/analysis-api/testData/components/callResolver/resolveCall/eqEqCall_fromDataClass.txt create mode 100644 analysis/analysis-api/testData/components/callResolver/resolveCall/eqEqCall_fromDataClass_overridden.kt create mode 100644 analysis/analysis-api/testData/components/callResolver/resolveCall/eqEqCall_fromDataClass_overridden.txt create mode 100644 analysis/analysis-api/testData/components/callResolver/resolveCall/eqEqCall_fromSealedClass.kt create mode 100644 analysis/analysis-api/testData/components/callResolver/resolveCall/eqEqCall_fromSealedClass.txt 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 95ad3001d44..eec62225678 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 @@ -364,6 +364,24 @@ public class Fe10IdeNormalAnalysisSourceModuleResolveCallTestGenerated extends A runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/eqEqCall_fromAny.kt"); } + @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 { 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 453e9533873..60005ee1fef 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 @@ -364,6 +364,24 @@ public class FirIdeNormalAnalysisSourceModuleResolveCallTestGenerated extends Ab runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/eqEqCall_fromAny.kt"); } + @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 { 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 b83ebcb4a4c..3ec1aa64ad6 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 @@ -364,6 +364,24 @@ public class FirStandaloneNormalAnalysisSourceModuleResolveCallTestGenerated ext runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/eqEqCall_fromAny.kt"); } + @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 { 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 00000000000..1e2b729a9a4 --- /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(: 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 00000000000..b58e528947a --- /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) { + d1 == d2 +} \ 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 00000000000..7b6ab47c78d --- /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(: 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 00000000000..381ff501732 --- /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) { + d1 == d2 +} \ 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 00000000000..1e2b729a9a4 --- /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(: 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 00000000000..33ca3cec018 --- /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) { + s1 == s2 + } +} 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 00000000000..57d860aea9c --- /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(: 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) + }