From de75297875a8461a1678b5fa6d6fc17059adb658 Mon Sep 17 00:00:00 2001 From: Roman Golyshev Date: Mon, 11 Mar 2024 15:52:16 +0100 Subject: [PATCH] KT-66498 [AA] Add more tests for the `isSubClassOf/isDirectSubClassOf` Also, reproduce the difference between the K1 and K2 implementation of `isSubClassOf` for the same class --- ...SourceModuleIsSubclassOfTestGenerated.java | 30 +++++++++++++++++++ ...SourceModuleIsSubclassOfTestGenerated.java | 30 +++++++++++++++++++ ...SourceModuleIsSubclassOfTestGenerated.java | 30 +++++++++++++++++++ ...SourceModuleIsSubclassOfTestGenerated.java | 30 +++++++++++++++++++ .../isSubclassOf/childClass.kt | 5 ++++ .../isSubclassOf/childClass.txt | 2 ++ .../isSubclassOf/grandParentClass.kt | 7 +++++ .../isSubclassOf/grandParentClass.txt | 2 ++ .../isSubclassOf/parentClass.kt | 5 ++++ .../isSubclassOf/parentClass.txt | 2 ++ .../isSubclassOf/sameClass.descriptors.txt | 2 ++ .../isSubclassOf/sameClass.kt | 4 +++ .../isSubclassOf/sameClass.txt | 2 ++ .../isSubclassOf/unrelatedClass.kt | 5 ++++ .../isSubclassOf/unrelatedClass.txt | 2 ++ 15 files changed, 158 insertions(+) create mode 100644 analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/childClass.kt create mode 100644 analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/childClass.txt create mode 100644 analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/grandParentClass.kt create mode 100644 analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/grandParentClass.txt create mode 100644 analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/parentClass.kt create mode 100644 analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/parentClass.txt create mode 100644 analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/sameClass.descriptors.txt create mode 100644 analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/sameClass.kt create mode 100644 analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/sameClass.txt create mode 100644 analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/unrelatedClass.kt create mode 100644 analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/unrelatedClass.txt diff --git a/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/components/symbolDeclarationOverridesProvider/Fe10IdeNormalAnalysisSourceModuleIsSubclassOfTestGenerated.java b/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/components/symbolDeclarationOverridesProvider/Fe10IdeNormalAnalysisSourceModuleIsSubclassOfTestGenerated.java index 27fec39478f..aa65d7287fc 100644 --- a/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/components/symbolDeclarationOverridesProvider/Fe10IdeNormalAnalysisSourceModuleIsSubclassOfTestGenerated.java +++ b/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/components/symbolDeclarationOverridesProvider/Fe10IdeNormalAnalysisSourceModuleIsSubclassOfTestGenerated.java @@ -45,9 +45,39 @@ public class Fe10IdeNormalAnalysisSourceModuleIsSubclassOfTestGenerated extends KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf"), Pattern.compile("^(.+)\\.kt$"), null, true); } + @Test + @TestMetadata("childClass.kt") + public void testChildClass() { + runTest("analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/childClass.kt"); + } + + @Test + @TestMetadata("grandParentClass.kt") + public void testGrandParentClass() { + runTest("analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/grandParentClass.kt"); + } + @Test @TestMetadata("localClasses.kt") public void testLocalClasses() { runTest("analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/localClasses.kt"); } + + @Test + @TestMetadata("parentClass.kt") + public void testParentClass() { + runTest("analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/parentClass.kt"); + } + + @Test + @TestMetadata("sameClass.kt") + public void testSameClass() { + runTest("analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/sameClass.kt"); + } + + @Test + @TestMetadata("unrelatedClass.kt") + public void testUnrelatedClass() { + runTest("analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/unrelatedClass.kt"); + } } diff --git a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/symbolDeclarationOverridesProvider/FirIdeDependentAnalysisSourceModuleIsSubclassOfTestGenerated.java b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/symbolDeclarationOverridesProvider/FirIdeDependentAnalysisSourceModuleIsSubclassOfTestGenerated.java index 9c80048fe97..7a3f8335845 100644 --- a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/symbolDeclarationOverridesProvider/FirIdeDependentAnalysisSourceModuleIsSubclassOfTestGenerated.java +++ b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/symbolDeclarationOverridesProvider/FirIdeDependentAnalysisSourceModuleIsSubclassOfTestGenerated.java @@ -45,9 +45,39 @@ public class FirIdeDependentAnalysisSourceModuleIsSubclassOfTestGenerated extend KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf"), Pattern.compile("^(.+)\\.kt$"), null, true); } + @Test + @TestMetadata("childClass.kt") + public void testChildClass() { + runTest("analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/childClass.kt"); + } + + @Test + @TestMetadata("grandParentClass.kt") + public void testGrandParentClass() { + runTest("analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/grandParentClass.kt"); + } + @Test @TestMetadata("localClasses.kt") public void testLocalClasses() { runTest("analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/localClasses.kt"); } + + @Test + @TestMetadata("parentClass.kt") + public void testParentClass() { + runTest("analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/parentClass.kt"); + } + + @Test + @TestMetadata("sameClass.kt") + public void testSameClass() { + runTest("analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/sameClass.kt"); + } + + @Test + @TestMetadata("unrelatedClass.kt") + public void testUnrelatedClass() { + runTest("analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/unrelatedClass.kt"); + } } diff --git a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/symbolDeclarationOverridesProvider/FirIdeNormalAnalysisSourceModuleIsSubclassOfTestGenerated.java b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/symbolDeclarationOverridesProvider/FirIdeNormalAnalysisSourceModuleIsSubclassOfTestGenerated.java index 09a69fc5b42..94c1971fbad 100644 --- a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/symbolDeclarationOverridesProvider/FirIdeNormalAnalysisSourceModuleIsSubclassOfTestGenerated.java +++ b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/symbolDeclarationOverridesProvider/FirIdeNormalAnalysisSourceModuleIsSubclassOfTestGenerated.java @@ -45,9 +45,39 @@ public class FirIdeNormalAnalysisSourceModuleIsSubclassOfTestGenerated extends A KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf"), Pattern.compile("^(.+)\\.kt$"), null, true); } + @Test + @TestMetadata("childClass.kt") + public void testChildClass() { + runTest("analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/childClass.kt"); + } + + @Test + @TestMetadata("grandParentClass.kt") + public void testGrandParentClass() { + runTest("analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/grandParentClass.kt"); + } + @Test @TestMetadata("localClasses.kt") public void testLocalClasses() { runTest("analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/localClasses.kt"); } + + @Test + @TestMetadata("parentClass.kt") + public void testParentClass() { + runTest("analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/parentClass.kt"); + } + + @Test + @TestMetadata("sameClass.kt") + public void testSameClass() { + runTest("analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/sameClass.kt"); + } + + @Test + @TestMetadata("unrelatedClass.kt") + public void testUnrelatedClass() { + runTest("analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/unrelatedClass.kt"); + } } diff --git a/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/symbolDeclarationOverridesProvider/FirStandaloneNormalAnalysisSourceModuleIsSubclassOfTestGenerated.java b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/symbolDeclarationOverridesProvider/FirStandaloneNormalAnalysisSourceModuleIsSubclassOfTestGenerated.java index 52ccd6dbdd1..f4691e9c53d 100644 --- a/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/symbolDeclarationOverridesProvider/FirStandaloneNormalAnalysisSourceModuleIsSubclassOfTestGenerated.java +++ b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/symbolDeclarationOverridesProvider/FirStandaloneNormalAnalysisSourceModuleIsSubclassOfTestGenerated.java @@ -45,9 +45,39 @@ public class FirStandaloneNormalAnalysisSourceModuleIsSubclassOfTestGenerated ex KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf"), Pattern.compile("^(.+)\\.kt$"), null, true); } + @Test + @TestMetadata("childClass.kt") + public void testChildClass() { + runTest("analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/childClass.kt"); + } + + @Test + @TestMetadata("grandParentClass.kt") + public void testGrandParentClass() { + runTest("analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/grandParentClass.kt"); + } + @Test @TestMetadata("localClasses.kt") public void testLocalClasses() { runTest("analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/localClasses.kt"); } + + @Test + @TestMetadata("parentClass.kt") + public void testParentClass() { + runTest("analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/parentClass.kt"); + } + + @Test + @TestMetadata("sameClass.kt") + public void testSameClass() { + runTest("analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/sameClass.kt"); + } + + @Test + @TestMetadata("unrelatedClass.kt") + public void testUnrelatedClass() { + runTest("analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/unrelatedClass.kt"); + } } diff --git a/analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/childClass.kt b/analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/childClass.kt new file mode 100644 index 00000000000..b17d8cb77ca --- /dev/null +++ b/analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/childClass.kt @@ -0,0 +1,5 @@ +package test + +open class MyClass + +class ChildClass : MyClass() \ No newline at end of file diff --git a/analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/childClass.txt b/analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/childClass.txt new file mode 100644 index 00000000000..02f9d941b4a --- /dev/null +++ b/analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/childClass.txt @@ -0,0 +1,2 @@ +IS_SUBCLASS: false +IS_DIRECT_SUBCLASS: false diff --git a/analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/grandParentClass.kt b/analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/grandParentClass.kt new file mode 100644 index 00000000000..2d676abc196 --- /dev/null +++ b/analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/grandParentClass.kt @@ -0,0 +1,7 @@ +package test + +open class GrandParent() + +open class Parent : GrandParent() + +class MyClass : Parent() \ No newline at end of file diff --git a/analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/grandParentClass.txt b/analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/grandParentClass.txt new file mode 100644 index 00000000000..f47502b604e --- /dev/null +++ b/analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/grandParentClass.txt @@ -0,0 +1,2 @@ +IS_SUBCLASS: true +IS_DIRECT_SUBCLASS: false diff --git a/analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/parentClass.kt b/analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/parentClass.kt new file mode 100644 index 00000000000..f64169e563a --- /dev/null +++ b/analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/parentClass.kt @@ -0,0 +1,5 @@ +package test + +open class Parent + +class MyClass : Parent() \ No newline at end of file diff --git a/analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/parentClass.txt b/analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/parentClass.txt new file mode 100644 index 00000000000..d624aa1c04d --- /dev/null +++ b/analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/parentClass.txt @@ -0,0 +1,2 @@ +IS_SUBCLASS: true +IS_DIRECT_SUBCLASS: true diff --git a/analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/sameClass.descriptors.txt b/analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/sameClass.descriptors.txt new file mode 100644 index 00000000000..f47502b604e --- /dev/null +++ b/analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/sameClass.descriptors.txt @@ -0,0 +1,2 @@ +IS_SUBCLASS: true +IS_DIRECT_SUBCLASS: false diff --git a/analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/sameClass.kt b/analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/sameClass.kt new file mode 100644 index 00000000000..7d0ae007427 --- /dev/null +++ b/analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/sameClass.kt @@ -0,0 +1,4 @@ +package test + +class A + diff --git a/analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/sameClass.txt b/analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/sameClass.txt new file mode 100644 index 00000000000..02f9d941b4a --- /dev/null +++ b/analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/sameClass.txt @@ -0,0 +1,2 @@ +IS_SUBCLASS: false +IS_DIRECT_SUBCLASS: false diff --git a/analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/unrelatedClass.kt b/analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/unrelatedClass.kt new file mode 100644 index 00000000000..cfcd1df87a6 --- /dev/null +++ b/analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/unrelatedClass.kt @@ -0,0 +1,5 @@ +package test + +class First + +class Second \ No newline at end of file diff --git a/analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/unrelatedClass.txt b/analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/unrelatedClass.txt new file mode 100644 index 00000000000..02f9d941b4a --- /dev/null +++ b/analysis/analysis-api/testData/components/symbolDeclarationOverridesProvider/isSubclassOf/unrelatedClass.txt @@ -0,0 +1,2 @@ +IS_SUBCLASS: false +IS_DIRECT_SUBCLASS: false