diff --git a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/inheritorsProvider/FirIdeNormalAnalysisScriptSourceModuleDanglingFileSealedInheritorsTestGenerated.java b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/inheritorsProvider/FirIdeNormalAnalysisScriptSourceModuleDanglingFileSealedInheritorsTestGenerated.java new file mode 100644 index 00000000000..2d41a9de317 --- /dev/null +++ b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/inheritorsProvider/FirIdeNormalAnalysisScriptSourceModuleDanglingFileSealedInheritorsTestGenerated.java @@ -0,0 +1,47 @@ +/* + * Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.analysis.api.fir.test.cases.generated.cases.components.inheritorsProvider; + +import com.intellij.testFramework.TestDataPath; +import org.jetbrains.kotlin.test.util.KtTestUtil; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.kotlin.analysis.api.fir.test.configurators.AnalysisApiFirTestConfiguratorFactory; +import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiTestConfiguratorFactoryData; +import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiTestConfigurator; +import org.jetbrains.kotlin.analysis.test.framework.test.configurators.TestModuleKind; +import org.jetbrains.kotlin.analysis.test.framework.test.configurators.FrontendKind; +import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisSessionMode; +import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiMode; +import org.jetbrains.kotlin.analysis.api.impl.base.test.cases.components.inheritorsProvider.AbstractDanglingFileSealedInheritorsTest; +import org.jetbrains.kotlin.test.TestMetadata; +import org.junit.jupiter.api.Test; + +import java.io.File; +import java.util.regex.Pattern; + +/** This class is generated by {@link org.jetbrains.kotlin.generators.tests.analysis.api.GenerateAnalysisApiTestsKt}. DO NOT MODIFY MANUALLY */ +@SuppressWarnings("all") +@TestMetadata("analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors") +@TestDataPath("$PROJECT_ROOT") +public class FirIdeNormalAnalysisScriptSourceModuleDanglingFileSealedInheritorsTestGenerated extends AbstractDanglingFileSealedInheritorsTest { + @NotNull + @Override + public AnalysisApiTestConfigurator getConfigurator() { + return AnalysisApiFirTestConfiguratorFactory.INSTANCE.createConfigurator( + new AnalysisApiTestConfiguratorFactoryData( + FrontendKind.Fir, + TestModuleKind.ScriptSource, + AnalysisSessionMode.Normal, + AnalysisApiMode.Ide + ) + ); + } + + @Test + public void testAllFilesPresentInSealedInheritors() { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors"), Pattern.compile("^(.+)\\.kts$"), null, true); + } +} diff --git a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/inheritorsProvider/FirIdeNormalAnalysisScriptSourceModuleSealedInheritorsTestGenerated.java b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/inheritorsProvider/FirIdeNormalAnalysisScriptSourceModuleSealedInheritorsTestGenerated.java new file mode 100644 index 00000000000..6607f8d21bc --- /dev/null +++ b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/inheritorsProvider/FirIdeNormalAnalysisScriptSourceModuleSealedInheritorsTestGenerated.java @@ -0,0 +1,47 @@ +/* + * Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.analysis.api.fir.test.cases.generated.cases.components.inheritorsProvider; + +import com.intellij.testFramework.TestDataPath; +import org.jetbrains.kotlin.test.util.KtTestUtil; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.kotlin.analysis.api.fir.test.configurators.AnalysisApiFirTestConfiguratorFactory; +import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiTestConfiguratorFactoryData; +import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiTestConfigurator; +import org.jetbrains.kotlin.analysis.test.framework.test.configurators.TestModuleKind; +import org.jetbrains.kotlin.analysis.test.framework.test.configurators.FrontendKind; +import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisSessionMode; +import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiMode; +import org.jetbrains.kotlin.analysis.api.impl.base.test.cases.components.inheritorsProvider.AbstractSealedInheritorsTest; +import org.jetbrains.kotlin.test.TestMetadata; +import org.junit.jupiter.api.Test; + +import java.io.File; +import java.util.regex.Pattern; + +/** This class is generated by {@link org.jetbrains.kotlin.generators.tests.analysis.api.GenerateAnalysisApiTestsKt}. DO NOT MODIFY MANUALLY */ +@SuppressWarnings("all") +@TestMetadata("analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors") +@TestDataPath("$PROJECT_ROOT") +public class FirIdeNormalAnalysisScriptSourceModuleSealedInheritorsTestGenerated extends AbstractSealedInheritorsTest { + @NotNull + @Override + public AnalysisApiTestConfigurator getConfigurator() { + return AnalysisApiFirTestConfiguratorFactory.INSTANCE.createConfigurator( + new AnalysisApiTestConfiguratorFactoryData( + FrontendKind.Fir, + TestModuleKind.ScriptSource, + AnalysisSessionMode.Normal, + AnalysisApiMode.Ide + ) + ); + } + + @Test + public void testAllFilesPresentInSealedInheritors() { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors"), Pattern.compile("^(.+)\\.kts$"), null, true); + } +} diff --git a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/inheritorsProvider/FirIdeNormalAnalysisSourceModuleDanglingFileSealedInheritorsTestGenerated.java b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/inheritorsProvider/FirIdeNormalAnalysisSourceModuleDanglingFileSealedInheritorsTestGenerated.java new file mode 100644 index 00000000000..be9676a785a --- /dev/null +++ b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/inheritorsProvider/FirIdeNormalAnalysisSourceModuleDanglingFileSealedInheritorsTestGenerated.java @@ -0,0 +1,83 @@ +/* + * Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.analysis.api.fir.test.cases.generated.cases.components.inheritorsProvider; + +import com.intellij.testFramework.TestDataPath; +import org.jetbrains.kotlin.test.util.KtTestUtil; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.kotlin.analysis.api.fir.test.configurators.AnalysisApiFirTestConfiguratorFactory; +import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiTestConfiguratorFactoryData; +import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiTestConfigurator; +import org.jetbrains.kotlin.analysis.test.framework.test.configurators.TestModuleKind; +import org.jetbrains.kotlin.analysis.test.framework.test.configurators.FrontendKind; +import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisSessionMode; +import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiMode; +import org.jetbrains.kotlin.analysis.api.impl.base.test.cases.components.inheritorsProvider.AbstractDanglingFileSealedInheritorsTest; +import org.jetbrains.kotlin.test.TestMetadata; +import org.junit.jupiter.api.Test; + +import java.io.File; +import java.util.regex.Pattern; + +/** This class is generated by {@link org.jetbrains.kotlin.generators.tests.analysis.api.GenerateAnalysisApiTestsKt}. DO NOT MODIFY MANUALLY */ +@SuppressWarnings("all") +@TestMetadata("analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors") +@TestDataPath("$PROJECT_ROOT") +public class FirIdeNormalAnalysisSourceModuleDanglingFileSealedInheritorsTestGenerated extends AbstractDanglingFileSealedInheritorsTest { + @NotNull + @Override + public AnalysisApiTestConfigurator getConfigurator() { + return AnalysisApiFirTestConfiguratorFactory.INSTANCE.createConfigurator( + new AnalysisApiTestConfiguratorFactoryData( + FrontendKind.Fir, + TestModuleKind.Source, + AnalysisSessionMode.Normal, + AnalysisApiMode.Ide + ) + ); + } + + @Test + public void testAllFilesPresentInSealedInheritors() { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors"), Pattern.compile("^(.+)\\.kt$"), null, true); + } + + @Test + @TestMetadata("sealedClassFromDependency.kt") + public void testSealedClassFromDependency() { + runTest("analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors/sealedClassFromDependency.kt"); + } + + @Test + @TestMetadata("sealedClassFromLibrary.kt") + public void testSealedClassFromLibrary() { + runTest("analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors/sealedClassFromLibrary.kt"); + } + + @Test + @TestMetadata("sealedClassSameModule.kt") + public void testSealedClassSameModule() { + runTest("analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors/sealedClassSameModule.kt"); + } + + @Test + @TestMetadata("sealedInterfaceFromDependency.kt") + public void testSealedInterfaceFromDependency() { + runTest("analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors/sealedInterfaceFromDependency.kt"); + } + + @Test + @TestMetadata("sealedInterfaceFromLibrary.kt") + public void testSealedInterfaceFromLibrary() { + runTest("analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors/sealedInterfaceFromLibrary.kt"); + } + + @Test + @TestMetadata("sealedInterfaceSameModule.kt") + public void testSealedInterfaceSameModule() { + runTest("analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors/sealedInterfaceSameModule.kt"); + } +} diff --git a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/inheritorsProvider/FirIdeNormalAnalysisSourceModuleSealedInheritorsTestGenerated.java b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/inheritorsProvider/FirIdeNormalAnalysisSourceModuleSealedInheritorsTestGenerated.java new file mode 100644 index 00000000000..79cf073ba5e --- /dev/null +++ b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/inheritorsProvider/FirIdeNormalAnalysisSourceModuleSealedInheritorsTestGenerated.java @@ -0,0 +1,83 @@ +/* + * Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.analysis.api.fir.test.cases.generated.cases.components.inheritorsProvider; + +import com.intellij.testFramework.TestDataPath; +import org.jetbrains.kotlin.test.util.KtTestUtil; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.kotlin.analysis.api.fir.test.configurators.AnalysisApiFirTestConfiguratorFactory; +import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiTestConfiguratorFactoryData; +import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiTestConfigurator; +import org.jetbrains.kotlin.analysis.test.framework.test.configurators.TestModuleKind; +import org.jetbrains.kotlin.analysis.test.framework.test.configurators.FrontendKind; +import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisSessionMode; +import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiMode; +import org.jetbrains.kotlin.analysis.api.impl.base.test.cases.components.inheritorsProvider.AbstractSealedInheritorsTest; +import org.jetbrains.kotlin.test.TestMetadata; +import org.junit.jupiter.api.Test; + +import java.io.File; +import java.util.regex.Pattern; + +/** This class is generated by {@link org.jetbrains.kotlin.generators.tests.analysis.api.GenerateAnalysisApiTestsKt}. DO NOT MODIFY MANUALLY */ +@SuppressWarnings("all") +@TestMetadata("analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors") +@TestDataPath("$PROJECT_ROOT") +public class FirIdeNormalAnalysisSourceModuleSealedInheritorsTestGenerated extends AbstractSealedInheritorsTest { + @NotNull + @Override + public AnalysisApiTestConfigurator getConfigurator() { + return AnalysisApiFirTestConfiguratorFactory.INSTANCE.createConfigurator( + new AnalysisApiTestConfiguratorFactoryData( + FrontendKind.Fir, + TestModuleKind.Source, + AnalysisSessionMode.Normal, + AnalysisApiMode.Ide + ) + ); + } + + @Test + public void testAllFilesPresentInSealedInheritors() { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors"), Pattern.compile("^(.+)\\.kt$"), null, true); + } + + @Test + @TestMetadata("sealedClassFromDependency.kt") + public void testSealedClassFromDependency() { + runTest("analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors/sealedClassFromDependency.kt"); + } + + @Test + @TestMetadata("sealedClassFromLibrary.kt") + public void testSealedClassFromLibrary() { + runTest("analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors/sealedClassFromLibrary.kt"); + } + + @Test + @TestMetadata("sealedClassSameModule.kt") + public void testSealedClassSameModule() { + runTest("analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors/sealedClassSameModule.kt"); + } + + @Test + @TestMetadata("sealedInterfaceFromDependency.kt") + public void testSealedInterfaceFromDependency() { + runTest("analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors/sealedInterfaceFromDependency.kt"); + } + + @Test + @TestMetadata("sealedInterfaceFromLibrary.kt") + public void testSealedInterfaceFromLibrary() { + runTest("analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors/sealedInterfaceFromLibrary.kt"); + } + + @Test + @TestMetadata("sealedInterfaceSameModule.kt") + public void testSealedInterfaceSameModule() { + runTest("analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors/sealedInterfaceSameModule.kt"); + } +} diff --git a/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/components/inheritorsProvider/AbstractDanglingFileSealedInheritorsTest.kt b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/components/inheritorsProvider/AbstractDanglingFileSealedInheritorsTest.kt new file mode 100644 index 00000000000..d5b6e7caba4 --- /dev/null +++ b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/components/inheritorsProvider/AbstractDanglingFileSealedInheritorsTest.kt @@ -0,0 +1,20 @@ +/* + * Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.analysis.api.impl.base.test.cases.components.inheritorsProvider + +import org.jetbrains.kotlin.psi.KtFile +import org.jetbrains.kotlin.psi.KtPsiFactory +import org.jetbrains.kotlin.test.model.TestModule +import org.jetbrains.kotlin.test.services.TestServices + +abstract class AbstractDanglingFileSealedInheritorsTest : AbstractSealedInheritorsTest() { + override fun doTestByMainFile(mainFile: KtFile, mainModule: TestModule, testServices: TestServices) { + val ktPsiFactory = KtPsiFactory.contextual(mainFile, markGenerated = true, eventSystemEnabled = false) + val fakeKtFile = ktPsiFactory.createFile("fake.kt", mainFile.text) + + super.doTestByMainFile(fakeKtFile, mainModule, testServices) + } +} diff --git a/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/components/inheritorsProvider/AbstractSealedInheritorsTest.kt b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/components/inheritorsProvider/AbstractSealedInheritorsTest.kt new file mode 100644 index 00000000000..7b8e9bd57be --- /dev/null +++ b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/components/inheritorsProvider/AbstractSealedInheritorsTest.kt @@ -0,0 +1,31 @@ +/* + * Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.analysis.api.impl.base.test.cases.components.inheritorsProvider + +import org.jetbrains.kotlin.analysis.api.impl.base.test.SymbolByFqName +import org.jetbrains.kotlin.analysis.api.symbols.KtNamedClassOrObjectSymbol +import org.jetbrains.kotlin.analysis.test.framework.base.AbstractAnalysisApiBasedTest +import org.jetbrains.kotlin.psi.KtFile +import org.jetbrains.kotlin.test.model.TestModule +import org.jetbrains.kotlin.test.services.TestServices +import org.jetbrains.kotlin.test.services.assertions + +abstract class AbstractSealedInheritorsTest : AbstractAnalysisApiBasedTest() { + override fun doTestByMainFile(mainFile: KtFile, mainModule: TestModule, testServices: TestServices) { + analyseForTest(mainFile) { + val actualText = with(SymbolByFqName.getSymbolDataFromFile(testDataPath)) { + val classSymbol = toSymbols(mainFile).singleOrNull() as? KtNamedClassOrObjectSymbol + ?: error("Expected a single named class to be specified.") + + classSymbol.getSealedClassInheritors().joinToString("\n\n") { inheritor -> + "${inheritor.classIdIfNonLocal!!}\n${inheritor.render()}" + } + } + + testServices.assertions.assertEqualsToTestDataFileSibling(actualText) + } + } +} diff --git a/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/inheritorsProvider/FirStandaloneNormalAnalysisSourceModuleDanglingFileSealedInheritorsTestGenerated.java b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/inheritorsProvider/FirStandaloneNormalAnalysisSourceModuleDanglingFileSealedInheritorsTestGenerated.java new file mode 100644 index 00000000000..10b7cf2d5e4 --- /dev/null +++ b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/inheritorsProvider/FirStandaloneNormalAnalysisSourceModuleDanglingFileSealedInheritorsTestGenerated.java @@ -0,0 +1,83 @@ +/* + * Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.analysis.api.standalone.fir.test.cases.generated.cases.components.inheritorsProvider; + +import com.intellij.testFramework.TestDataPath; +import org.jetbrains.kotlin.test.util.KtTestUtil; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.kotlin.analysis.api.standalone.fir.test.configurators.AnalysisApiFirStandaloneModeTestConfiguratorFactory; +import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiTestConfiguratorFactoryData; +import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiTestConfigurator; +import org.jetbrains.kotlin.analysis.test.framework.test.configurators.TestModuleKind; +import org.jetbrains.kotlin.analysis.test.framework.test.configurators.FrontendKind; +import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisSessionMode; +import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiMode; +import org.jetbrains.kotlin.analysis.api.impl.base.test.cases.components.inheritorsProvider.AbstractDanglingFileSealedInheritorsTest; +import org.jetbrains.kotlin.test.TestMetadata; +import org.junit.jupiter.api.Test; + +import java.io.File; +import java.util.regex.Pattern; + +/** This class is generated by {@link org.jetbrains.kotlin.generators.tests.analysis.api.GenerateAnalysisApiTestsKt}. DO NOT MODIFY MANUALLY */ +@SuppressWarnings("all") +@TestMetadata("analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors") +@TestDataPath("$PROJECT_ROOT") +public class FirStandaloneNormalAnalysisSourceModuleDanglingFileSealedInheritorsTestGenerated extends AbstractDanglingFileSealedInheritorsTest { + @NotNull + @Override + public AnalysisApiTestConfigurator getConfigurator() { + return AnalysisApiFirStandaloneModeTestConfiguratorFactory.INSTANCE.createConfigurator( + new AnalysisApiTestConfiguratorFactoryData( + FrontendKind.Fir, + TestModuleKind.Source, + AnalysisSessionMode.Normal, + AnalysisApiMode.Standalone + ) + ); + } + + @Test + public void testAllFilesPresentInSealedInheritors() { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors"), Pattern.compile("^(.+)\\.kt$"), null, true); + } + + @Test + @TestMetadata("sealedClassFromDependency.kt") + public void testSealedClassFromDependency() { + runTest("analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors/sealedClassFromDependency.kt"); + } + + @Test + @TestMetadata("sealedClassFromLibrary.kt") + public void testSealedClassFromLibrary() { + runTest("analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors/sealedClassFromLibrary.kt"); + } + + @Test + @TestMetadata("sealedClassSameModule.kt") + public void testSealedClassSameModule() { + runTest("analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors/sealedClassSameModule.kt"); + } + + @Test + @TestMetadata("sealedInterfaceFromDependency.kt") + public void testSealedInterfaceFromDependency() { + runTest("analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors/sealedInterfaceFromDependency.kt"); + } + + @Test + @TestMetadata("sealedInterfaceFromLibrary.kt") + public void testSealedInterfaceFromLibrary() { + runTest("analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors/sealedInterfaceFromLibrary.kt"); + } + + @Test + @TestMetadata("sealedInterfaceSameModule.kt") + public void testSealedInterfaceSameModule() { + runTest("analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors/sealedInterfaceSameModule.kt"); + } +} diff --git a/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/inheritorsProvider/FirStandaloneNormalAnalysisSourceModuleSealedInheritorsTestGenerated.java b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/inheritorsProvider/FirStandaloneNormalAnalysisSourceModuleSealedInheritorsTestGenerated.java new file mode 100644 index 00000000000..88c21dd29b1 --- /dev/null +++ b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/inheritorsProvider/FirStandaloneNormalAnalysisSourceModuleSealedInheritorsTestGenerated.java @@ -0,0 +1,83 @@ +/* + * Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.analysis.api.standalone.fir.test.cases.generated.cases.components.inheritorsProvider; + +import com.intellij.testFramework.TestDataPath; +import org.jetbrains.kotlin.test.util.KtTestUtil; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.kotlin.analysis.api.standalone.fir.test.configurators.AnalysisApiFirStandaloneModeTestConfiguratorFactory; +import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiTestConfiguratorFactoryData; +import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiTestConfigurator; +import org.jetbrains.kotlin.analysis.test.framework.test.configurators.TestModuleKind; +import org.jetbrains.kotlin.analysis.test.framework.test.configurators.FrontendKind; +import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisSessionMode; +import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiMode; +import org.jetbrains.kotlin.analysis.api.impl.base.test.cases.components.inheritorsProvider.AbstractSealedInheritorsTest; +import org.jetbrains.kotlin.test.TestMetadata; +import org.junit.jupiter.api.Test; + +import java.io.File; +import java.util.regex.Pattern; + +/** This class is generated by {@link org.jetbrains.kotlin.generators.tests.analysis.api.GenerateAnalysisApiTestsKt}. DO NOT MODIFY MANUALLY */ +@SuppressWarnings("all") +@TestMetadata("analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors") +@TestDataPath("$PROJECT_ROOT") +public class FirStandaloneNormalAnalysisSourceModuleSealedInheritorsTestGenerated extends AbstractSealedInheritorsTest { + @NotNull + @Override + public AnalysisApiTestConfigurator getConfigurator() { + return AnalysisApiFirStandaloneModeTestConfiguratorFactory.INSTANCE.createConfigurator( + new AnalysisApiTestConfiguratorFactoryData( + FrontendKind.Fir, + TestModuleKind.Source, + AnalysisSessionMode.Normal, + AnalysisApiMode.Standalone + ) + ); + } + + @Test + public void testAllFilesPresentInSealedInheritors() { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors"), Pattern.compile("^(.+)\\.kt$"), null, true); + } + + @Test + @TestMetadata("sealedClassFromDependency.kt") + public void testSealedClassFromDependency() { + runTest("analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors/sealedClassFromDependency.kt"); + } + + @Test + @TestMetadata("sealedClassFromLibrary.kt") + public void testSealedClassFromLibrary() { + runTest("analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors/sealedClassFromLibrary.kt"); + } + + @Test + @TestMetadata("sealedClassSameModule.kt") + public void testSealedClassSameModule() { + runTest("analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors/sealedClassSameModule.kt"); + } + + @Test + @TestMetadata("sealedInterfaceFromDependency.kt") + public void testSealedInterfaceFromDependency() { + runTest("analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors/sealedInterfaceFromDependency.kt"); + } + + @Test + @TestMetadata("sealedInterfaceFromLibrary.kt") + public void testSealedInterfaceFromLibrary() { + runTest("analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors/sealedInterfaceFromLibrary.kt"); + } + + @Test + @TestMetadata("sealedInterfaceSameModule.kt") + public void testSealedInterfaceSameModule() { + runTest("analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors/sealedInterfaceSameModule.kt"); + } +} diff --git a/analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors/sealedClassFromDependency.kt b/analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors/sealedClassFromDependency.kt new file mode 100644 index 00000000000..9f069723c16 --- /dev/null +++ b/analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors/sealedClassFromDependency.kt @@ -0,0 +1,11 @@ +// MODULE: dependency +// FILE: MySealedClass.kt +sealed class MySealedClass + +class OneSealedChild : MySealedClass() +class TwoSealedChild : MySealedClass() + +// MODULE: main(dependency) +// FILE: main.kt + +// class: MySealedClass diff --git a/analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors/sealedClassFromDependency.txt b/analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors/sealedClassFromDependency.txt new file mode 100644 index 00000000000..0a8dc6df6a2 --- /dev/null +++ b/analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors/sealedClassFromDependency.txt @@ -0,0 +1,5 @@ +/OneSealedChild +class OneSealedChild : MySealedClass() + +/TwoSealedChild +class TwoSealedChild : MySealedClass() diff --git a/analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors/sealedClassFromLibrary.kt b/analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors/sealedClassFromLibrary.kt new file mode 100644 index 00000000000..a53b1fd9c9d --- /dev/null +++ b/analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors/sealedClassFromLibrary.kt @@ -0,0 +1,12 @@ +// MODULE: lib +// MODULE_KIND: LibraryBinary +// FILE: MySealedClass.kt +sealed class MySealedClass + +class OneSealedChild : MySealedClass() +class TwoSealedChild : MySealedClass() + +// MODULE: main(lib) +// FILE: main.kt + +// class: MySealedClass diff --git a/analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors/sealedClassFromLibrary.txt b/analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors/sealedClassFromLibrary.txt new file mode 100644 index 00000000000..0a8dc6df6a2 --- /dev/null +++ b/analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors/sealedClassFromLibrary.txt @@ -0,0 +1,5 @@ +/OneSealedChild +class OneSealedChild : MySealedClass() + +/TwoSealedChild +class TwoSealedChild : MySealedClass() diff --git a/analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors/sealedClassSameModule.kt b/analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors/sealedClassSameModule.kt new file mode 100644 index 00000000000..4ed4e904801 --- /dev/null +++ b/analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors/sealedClassSameModule.kt @@ -0,0 +1,6 @@ +sealed class MySealedClass + +class OneSealedChild : MySealedClass() +class TwoSealedChild : MySealedClass() + +// class: MySealedClass diff --git a/analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors/sealedClassSameModule.txt b/analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors/sealedClassSameModule.txt new file mode 100644 index 00000000000..0a8dc6df6a2 --- /dev/null +++ b/analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors/sealedClassSameModule.txt @@ -0,0 +1,5 @@ +/OneSealedChild +class OneSealedChild : MySealedClass() + +/TwoSealedChild +class TwoSealedChild : MySealedClass() diff --git a/analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors/sealedInterfaceFromDependency.kt b/analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors/sealedInterfaceFromDependency.kt new file mode 100644 index 00000000000..29d2984ab3d --- /dev/null +++ b/analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors/sealedInterfaceFromDependency.kt @@ -0,0 +1,11 @@ +// MODULE: dependency +// FILE: MySealedInterface.kt +sealed interface MySealedInterface + +class OneSealedChild : MySealedInterface +class TwoSealedChild : MySealedInterface + +// MODULE: main(dependency) +// FILE: main.kt + +// class: MySealedInterface diff --git a/analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors/sealedInterfaceFromDependency.txt b/analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors/sealedInterfaceFromDependency.txt new file mode 100644 index 00000000000..05a67e04c0b --- /dev/null +++ b/analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors/sealedInterfaceFromDependency.txt @@ -0,0 +1,5 @@ +/OneSealedChild +class OneSealedChild : MySealedInterface + +/TwoSealedChild +class TwoSealedChild : MySealedInterface diff --git a/analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors/sealedInterfaceFromLibrary.kt b/analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors/sealedInterfaceFromLibrary.kt new file mode 100644 index 00000000000..c5237e63683 --- /dev/null +++ b/analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors/sealedInterfaceFromLibrary.kt @@ -0,0 +1,12 @@ +// MODULE: lib +// MODULE_KIND: LibraryBinary +// FILE: MySealedInterface.kt +sealed interface MySealedInterface + +class OneSealedChild : MySealedInterface +class TwoSealedChild : MySealedInterface + +// MODULE: main(lib) +// FILE: main.kt + +// class: MySealedInterface diff --git a/analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors/sealedInterfaceFromLibrary.txt b/analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors/sealedInterfaceFromLibrary.txt new file mode 100644 index 00000000000..05a67e04c0b --- /dev/null +++ b/analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors/sealedInterfaceFromLibrary.txt @@ -0,0 +1,5 @@ +/OneSealedChild +class OneSealedChild : MySealedInterface + +/TwoSealedChild +class TwoSealedChild : MySealedInterface diff --git a/analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors/sealedInterfaceSameModule.kt b/analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors/sealedInterfaceSameModule.kt new file mode 100644 index 00000000000..bb94a59b153 --- /dev/null +++ b/analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors/sealedInterfaceSameModule.kt @@ -0,0 +1,6 @@ +sealed interface MySealedInterface + +class OneSealedChild : MySealedInterface +class TwoSealedChild : MySealedInterface + +// class: MySealedInterface diff --git a/analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors/sealedInterfaceSameModule.txt b/analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors/sealedInterfaceSameModule.txt new file mode 100644 index 00000000000..05a67e04c0b --- /dev/null +++ b/analysis/analysis-api/testData/components/inheritorsProvider/sealedInheritors/sealedInterfaceSameModule.txt @@ -0,0 +1,5 @@ +/OneSealedChild +class OneSealedChild : MySealedInterface + +/TwoSealedChild +class TwoSealedChild : MySealedInterface diff --git a/generators/analysis-api-generator/tests/org/jetbrains/kotlin/generators/tests/analysis/api/analysisApi.kt b/generators/analysis-api-generator/tests/org/jetbrains/kotlin/generators/tests/analysis/api/analysisApi.kt index a67139bfd69..2c22d121e5a 100644 --- a/generators/analysis-api-generator/tests/org/jetbrains/kotlin/generators/tests/analysis/api/analysisApi.kt +++ b/generators/analysis-api-generator/tests/org/jetbrains/kotlin/generators/tests/analysis/api/analysisApi.kt @@ -29,6 +29,8 @@ import org.jetbrains.kotlin.analysis.api.impl.base.test.cases.components.express import org.jetbrains.kotlin.analysis.api.impl.base.test.cases.components.expressionTypeProvider.AbstractExpectedExpressionTypeTest import org.jetbrains.kotlin.analysis.api.impl.base.test.cases.components.expressionTypeProvider.AbstractHLExpressionTypeTest import org.jetbrains.kotlin.analysis.api.impl.base.test.cases.components.importOptimizer.AbstractAnalysisApiImportOptimizerTest +import org.jetbrains.kotlin.analysis.api.impl.base.test.cases.components.inheritorsProvider.AbstractDanglingFileSealedInheritorsTest +import org.jetbrains.kotlin.analysis.api.impl.base.test.cases.components.inheritorsProvider.AbstractSealedInheritorsTest import org.jetbrains.kotlin.analysis.api.impl.base.test.cases.components.klibSourceFileProvider.AbstractGetKlibSourceFileNameTest import org.jetbrains.kotlin.analysis.api.impl.base.test.cases.components.multiplatformInfoProvider.AbstractExpectForActualTest import org.jetbrains.kotlin.analysis.api.impl.base.test.cases.components.psiTypeProvider.AbstractAnalysisApiExpressionPsiTypeProviderTest @@ -375,6 +377,16 @@ private fun AnalysisApiTestGroup.generateAnalysisApiComponentsTests() { } } + component("inheritorsProvider", filter = analysisSessionModeIs(AnalysisSessionMode.Normal) and frontendIs(FrontendKind.Fir)) { + test { + model(it, "sealedInheritors") + } + + test { + model(it, "sealedInheritors") + } + } + component("multiplatformInfoProvider") { test { model(it, "expectForActual")