[FIR] Test for duplicate filtering for overrides from Java

This commit is contained in:
Artem Vasilev
2023-03-02 18:05:40 +01:00
committed by Space Team
parent f7dea5bd70
commit 564d44b16d
8 changed files with 65 additions and 7 deletions
@@ -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); 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 @Test
@TestMetadata("backingField.kt") @TestMetadata("backingField.kt")
public void testBackingField() throws Exception { public void testBackingField() throws Exception {
@@ -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); 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 @Test
@TestMetadata("backingField.kt") @TestMetadata("backingField.kt")
public void testBackingField() throws Exception { public void testBackingField() throws Exception {
@@ -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); 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 @Test
@TestMetadata("backingField.kt") @TestMetadata("backingField.kt")
public void testBackingField() throws Exception { public void testBackingField() throws Exception {
@@ -63,13 +63,17 @@ abstract class AbstractOverriddenDeclarationProviderTest : AbstractAnalysisApiBa
private fun KtAnalysisSession.getPath(symbol: KtCallableSymbol): String = when (symbol) { private fun KtAnalysisSession.getPath(symbol: KtCallableSymbol): String = when (symbol) {
is KtSyntheticJavaPropertySymbol -> symbol.callableIdIfNonLocal?.toString()!! is KtSyntheticJavaPropertySymbol -> symbol.callableIdIfNonLocal?.toString()!!
else -> { else -> {
val ktDeclaration = symbol.psi as KtDeclaration val ktDeclaration = symbol.psi as? KtDeclaration
ktDeclaration if (ktDeclaration == null) {
.parentsOfType<KtDeclaration>(withSelf = true) symbol.callableIdIfNonLocal?.toString()!!
.map { it.name ?: "<no name>" } } else {
.toList() ktDeclaration
.asReversed() .parentsOfType<KtDeclaration>(withSelf = true)
.joinToString(separator = ".") .map { it.name ?: "<no name>" }
.toList()
.asReversed()
.joinToString(separator = ".")
}
} }
} }
} }
@@ -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); 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 @Test
@TestMetadata("backingField.kt") @TestMetadata("backingField.kt")
public void testBackingField() throws Exception { public void testBackingField() throws Exception {
@@ -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
@@ -0,0 +1,15 @@
class MyList : ArrayList<Int>() {
override val size<caret>: 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
@@ -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