From 564d44b16d3f62dd630de3c9e164789e7ee3822d Mon Sep 17 00:00:00 2001 From: Artem Vasilev Date: Thu, 2 Mar 2023 18:05:40 +0100 Subject: [PATCH] [FIR] Test for duplicate filtering for overrides from Java --- ...riddenDeclarationProviderTestGenerated.java | 6 ++++++ ...riddenDeclarationProviderTestGenerated.java | 6 ++++++ ...riddenDeclarationProviderTestGenerated.java | 6 ++++++ ...bstractOverriddenDeclarationProviderTest.kt | 18 +++++++++++------- ...riddenDeclarationProviderTestGenerated.java | 6 ++++++ .../arraylistSubtype.descriptors.txt | 7 +++++++ .../overriddenSymbols/arraylistSubtype.kt | 15 +++++++++++++++ .../overriddenSymbols/arraylistSubtype.txt | 8 ++++++++ 8 files changed, 65 insertions(+), 7 deletions(-) create mode 100644 analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/overriddenSymbols/arraylistSubtype.descriptors.txt create mode 100644 analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/overriddenSymbols/arraylistSubtype.kt create mode 100644 analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/overriddenSymbols/arraylistSubtype.txt diff --git a/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/components/symbolDeclarationOverridesProvider/Fe10IdeNormalAnalysisSourceModuleOverriddenDeclarationProviderTestGenerated.java b/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/components/symbolDeclarationOverridesProvider/Fe10IdeNormalAnalysisSourceModuleOverriddenDeclarationProviderTestGenerated.java index 2c875a87ab0..cd18896efe0 100644 --- a/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/components/symbolDeclarationOverridesProvider/Fe10IdeNormalAnalysisSourceModuleOverriddenDeclarationProviderTestGenerated.java +++ b/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/components/symbolDeclarationOverridesProvider/Fe10IdeNormalAnalysisSourceModuleOverriddenDeclarationProviderTestGenerated.java @@ -46,6 +46,12 @@ public class Fe10IdeNormalAnalysisSourceModuleOverriddenDeclarationProviderTestG KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/overriddenSymbols"), Pattern.compile("^(.+)\\.kt$"), null, true); } + @Test + @TestMetadata("arraylistSubtype.kt") + public void testArraylistSubtype() throws Exception { + runTest("analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/overriddenSymbols/arraylistSubtype.kt"); + } + @Test @TestMetadata("backingField.kt") public void testBackingField() throws Exception { diff --git a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/symbolDeclarationOverridesProvider/FirIdeDependentAnalysisSourceModuleOverriddenDeclarationProviderTestGenerated.java b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/symbolDeclarationOverridesProvider/FirIdeDependentAnalysisSourceModuleOverriddenDeclarationProviderTestGenerated.java index 9b3c3f14e3d..0cdeb81588e 100644 --- a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/symbolDeclarationOverridesProvider/FirIdeDependentAnalysisSourceModuleOverriddenDeclarationProviderTestGenerated.java +++ b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/symbolDeclarationOverridesProvider/FirIdeDependentAnalysisSourceModuleOverriddenDeclarationProviderTestGenerated.java @@ -46,6 +46,12 @@ public class FirIdeDependentAnalysisSourceModuleOverriddenDeclarationProviderTes KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/overriddenSymbols"), Pattern.compile("^(.+)\\.kt$"), null, true); } + @Test + @TestMetadata("arraylistSubtype.kt") + public void testArraylistSubtype() throws Exception { + runTest("analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/overriddenSymbols/arraylistSubtype.kt"); + } + @Test @TestMetadata("backingField.kt") public void testBackingField() throws Exception { diff --git a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/symbolDeclarationOverridesProvider/FirIdeNormalAnalysisSourceModuleOverriddenDeclarationProviderTestGenerated.java b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/symbolDeclarationOverridesProvider/FirIdeNormalAnalysisSourceModuleOverriddenDeclarationProviderTestGenerated.java index cfc569e282f..2ea8216c194 100644 --- a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/symbolDeclarationOverridesProvider/FirIdeNormalAnalysisSourceModuleOverriddenDeclarationProviderTestGenerated.java +++ b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/symbolDeclarationOverridesProvider/FirIdeNormalAnalysisSourceModuleOverriddenDeclarationProviderTestGenerated.java @@ -46,6 +46,12 @@ public class FirIdeNormalAnalysisSourceModuleOverriddenDeclarationProviderTestGe KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/overriddenSymbols"), Pattern.compile("^(.+)\\.kt$"), null, true); } + @Test + @TestMetadata("arraylistSubtype.kt") + public void testArraylistSubtype() throws Exception { + runTest("analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/overriddenSymbols/arraylistSubtype.kt"); + } + @Test @TestMetadata("backingField.kt") public void testBackingField() throws Exception { diff --git a/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/components/symbolDeclarationOverridesProvider/AbstractOverriddenDeclarationProviderTest.kt b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/components/symbolDeclarationOverridesProvider/AbstractOverriddenDeclarationProviderTest.kt index 4010c41f3e4..4e98bdff9a3 100644 --- a/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/components/symbolDeclarationOverridesProvider/AbstractOverriddenDeclarationProviderTest.kt +++ b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/components/symbolDeclarationOverridesProvider/AbstractOverriddenDeclarationProviderTest.kt @@ -63,13 +63,17 @@ abstract class AbstractOverriddenDeclarationProviderTest : AbstractAnalysisApiBa private fun KtAnalysisSession.getPath(symbol: KtCallableSymbol): String = when (symbol) { is KtSyntheticJavaPropertySymbol -> symbol.callableIdIfNonLocal?.toString()!! else -> { - val ktDeclaration = symbol.psi as KtDeclaration - ktDeclaration - .parentsOfType(withSelf = true) - .map { it.name ?: "" } - .toList() - .asReversed() - .joinToString(separator = ".") + val ktDeclaration = symbol.psi as? KtDeclaration + if (ktDeclaration == null) { + symbol.callableIdIfNonLocal?.toString()!! + } else { + ktDeclaration + .parentsOfType(withSelf = true) + .map { it.name ?: "" } + .toList() + .asReversed() + .joinToString(separator = ".") + } } } } \ No newline at end of file diff --git a/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/symbolDeclarationOverridesProvider/FirStandaloneNormalAnalysisSourceModuleOverriddenDeclarationProviderTestGenerated.java b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/symbolDeclarationOverridesProvider/FirStandaloneNormalAnalysisSourceModuleOverriddenDeclarationProviderTestGenerated.java index 05eaede492d..a8e9b6a3ccb 100644 --- a/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/symbolDeclarationOverridesProvider/FirStandaloneNormalAnalysisSourceModuleOverriddenDeclarationProviderTestGenerated.java +++ b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/symbolDeclarationOverridesProvider/FirStandaloneNormalAnalysisSourceModuleOverriddenDeclarationProviderTestGenerated.java @@ -46,6 +46,12 @@ public class FirStandaloneNormalAnalysisSourceModuleOverriddenDeclarationProvide KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/overriddenSymbols"), Pattern.compile("^(.+)\\.kt$"), null, true); } + @Test + @TestMetadata("arraylistSubtype.kt") + public void testArraylistSubtype() throws Exception { + runTest("analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/overriddenSymbols/arraylistSubtype.kt"); + } + @Test @TestMetadata("backingField.kt") public void testBackingField() throws Exception { diff --git a/analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/overriddenSymbols/arraylistSubtype.descriptors.txt b/analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/overriddenSymbols/arraylistSubtype.descriptors.txt new file mode 100644 index 00000000000..95c9cc3dddc --- /dev/null +++ b/analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/overriddenSymbols/arraylistSubtype.descriptors.txt @@ -0,0 +1,7 @@ +ALL: + java/util/ArrayList.size: Int + java/util/AbstractCollection.size: Int + kotlin/collections/List.size: Int + kotlin/collections/Collection.size: Int +DIRECT: + java/util/ArrayList.size: Int diff --git a/analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/overriddenSymbols/arraylistSubtype.kt b/analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/overriddenSymbols/arraylistSubtype.kt new file mode 100644 index 00000000000..f315af0203a --- /dev/null +++ b/analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/overriddenSymbols/arraylistSubtype.kt @@ -0,0 +1,15 @@ +class MyList : ArrayList() { + override val size: Int = 0 + override fun get(index: Int): Int = 0 +} + +// RESULT +// ALL: +// java/util/ArrayList.size: Int +// java/util/AbstractList.size: Int +// java/util/AbstractCollection.size: Int +// List.size: Int +// Collection.size: Int + +// DIRECT: +// java/util/ArrayList.size: Int diff --git a/analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/overriddenSymbols/arraylistSubtype.txt b/analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/overriddenSymbols/arraylistSubtype.txt new file mode 100644 index 00000000000..7b8d9d5d418 --- /dev/null +++ b/analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/overriddenSymbols/arraylistSubtype.txt @@ -0,0 +1,8 @@ +ALL: + java/util/ArrayList.size: Int + java/util/AbstractList.size: Int + java/util/AbstractCollection.size: Int + List.size: Int + Collection.size: Int +DIRECT: + java/util/ArrayList.size: Int