From 88a85b893601a87552b9f1646a047fd01b7aa8f0 Mon Sep 17 00:00:00 2001 From: Yan Zhulanow Date: Thu, 1 Feb 2024 01:38:29 +0900 Subject: [PATCH] [Analysis API] Add reference tests for containing declaration provider --- ...ationProviderByReferenceTestGenerated.java | 47 ++++++++ ...ationProviderByReferenceTestGenerated.java | 101 ++++++++++++++++++ ...ationProviderByReferenceTestGenerated.java | 47 ++++++++ ...ationProviderByReferenceTestGenerated.java | 101 ++++++++++++++++++ ...iningDeclarationProviderByReferenceTest.kt | 46 ++++++++ ...ationProviderByReferenceTestGenerated.java | 101 ++++++++++++++++++ .../localFunction.kt | 5 + .../localFunction.txt | 2 + .../localFunctionFromInside.kt | 5 + .../localFunctionFromInside.txt | 2 + .../nestedClass.kt | 9 ++ .../nestedClass.txt | 3 + .../nestedClassFromInside.kt | 7 ++ .../nestedClassFromInside.txt | 3 + .../propertyAccessor.kt | 8 ++ .../propertyAccessor.txt | 2 + .../propertyAccessorFromInside.kt | 6 ++ .../propertyAccessorFromInside.txt | 2 + .../propertyField.kt | 6 ++ .../propertyField.txt | 3 + .../simple.kt | 7 ++ .../simple.txt | 2 + .../topLevelFunctionFromInside.kt | 3 + .../topLevelFunctionFromInside.txt | 1 + .../tests/analysis/api/analysisApi.kt | 5 + 25 files changed, 524 insertions(+) create mode 100644 analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/containingDeclarationProvider/FirIdeDependentAnalysisScriptSourceModuleContainingDeclarationProviderByReferenceTestGenerated.java create mode 100644 analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/containingDeclarationProvider/FirIdeDependentAnalysisSourceModuleContainingDeclarationProviderByReferenceTestGenerated.java create mode 100644 analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/containingDeclarationProvider/FirIdeNormalAnalysisScriptSourceModuleContainingDeclarationProviderByReferenceTestGenerated.java create mode 100644 analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/containingDeclarationProvider/FirIdeNormalAnalysisSourceModuleContainingDeclarationProviderByReferenceTestGenerated.java create mode 100644 analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/components/containingDeclarationProvider/AbstractContainingDeclarationProviderByReferenceTest.kt create mode 100644 analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/containingDeclarationProvider/FirStandaloneNormalAnalysisSourceModuleContainingDeclarationProviderByReferenceTestGenerated.java create mode 100644 analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/localFunction.kt create mode 100644 analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/localFunction.txt create mode 100644 analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/localFunctionFromInside.kt create mode 100644 analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/localFunctionFromInside.txt create mode 100644 analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/nestedClass.kt create mode 100644 analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/nestedClass.txt create mode 100644 analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/nestedClassFromInside.kt create mode 100644 analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/nestedClassFromInside.txt create mode 100644 analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/propertyAccessor.kt create mode 100644 analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/propertyAccessor.txt create mode 100644 analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/propertyAccessorFromInside.kt create mode 100644 analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/propertyAccessorFromInside.txt create mode 100644 analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/propertyField.kt create mode 100644 analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/propertyField.txt create mode 100644 analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/simple.kt create mode 100644 analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/simple.txt create mode 100644 analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/topLevelFunctionFromInside.kt create mode 100644 analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/topLevelFunctionFromInside.txt diff --git a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/containingDeclarationProvider/FirIdeDependentAnalysisScriptSourceModuleContainingDeclarationProviderByReferenceTestGenerated.java b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/containingDeclarationProvider/FirIdeDependentAnalysisScriptSourceModuleContainingDeclarationProviderByReferenceTestGenerated.java new file mode 100644 index 00000000000..6eab213425b --- /dev/null +++ b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/containingDeclarationProvider/FirIdeDependentAnalysisScriptSourceModuleContainingDeclarationProviderByReferenceTestGenerated.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.containingDeclarationProvider; + +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.containingDeclarationProvider.AbstractContainingDeclarationProviderByReferenceTest; +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/containingDeclarationProvider/containingDeclarationByReference") +@TestDataPath("$PROJECT_ROOT") +public class FirIdeDependentAnalysisScriptSourceModuleContainingDeclarationProviderByReferenceTestGenerated extends AbstractContainingDeclarationProviderByReferenceTest { + @NotNull + @Override + public AnalysisApiTestConfigurator getConfigurator() { + return AnalysisApiFirTestConfiguratorFactory.INSTANCE.createConfigurator( + new AnalysisApiTestConfiguratorFactoryData( + FrontendKind.Fir, + TestModuleKind.ScriptSource, + AnalysisSessionMode.Dependent, + AnalysisApiMode.Ide + ) + ); + } + + @Test + public void testAllFilesPresentInContainingDeclarationByReference() { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference"), 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/containingDeclarationProvider/FirIdeDependentAnalysisSourceModuleContainingDeclarationProviderByReferenceTestGenerated.java b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/containingDeclarationProvider/FirIdeDependentAnalysisSourceModuleContainingDeclarationProviderByReferenceTestGenerated.java new file mode 100644 index 00000000000..21193ed8d4f --- /dev/null +++ b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/containingDeclarationProvider/FirIdeDependentAnalysisSourceModuleContainingDeclarationProviderByReferenceTestGenerated.java @@ -0,0 +1,101 @@ +/* + * 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.containingDeclarationProvider; + +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.containingDeclarationProvider.AbstractContainingDeclarationProviderByReferenceTest; +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/containingDeclarationProvider/containingDeclarationByReference") +@TestDataPath("$PROJECT_ROOT") +public class FirIdeDependentAnalysisSourceModuleContainingDeclarationProviderByReferenceTestGenerated extends AbstractContainingDeclarationProviderByReferenceTest { + @NotNull + @Override + public AnalysisApiTestConfigurator getConfigurator() { + return AnalysisApiFirTestConfiguratorFactory.INSTANCE.createConfigurator( + new AnalysisApiTestConfiguratorFactoryData( + FrontendKind.Fir, + TestModuleKind.Source, + AnalysisSessionMode.Dependent, + AnalysisApiMode.Ide + ) + ); + } + + @Test + public void testAllFilesPresentInContainingDeclarationByReference() { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference"), Pattern.compile("^(.+)\\.kt$"), null, true); + } + + @Test + @TestMetadata("localFunction.kt") + public void testLocalFunction() { + runTest("analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/localFunction.kt"); + } + + @Test + @TestMetadata("localFunctionFromInside.kt") + public void testLocalFunctionFromInside() { + runTest("analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/localFunctionFromInside.kt"); + } + + @Test + @TestMetadata("nestedClass.kt") + public void testNestedClass() { + runTest("analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/nestedClass.kt"); + } + + @Test + @TestMetadata("nestedClassFromInside.kt") + public void testNestedClassFromInside() { + runTest("analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/nestedClassFromInside.kt"); + } + + @Test + @TestMetadata("propertyAccessor.kt") + public void testPropertyAccessor() { + runTest("analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/propertyAccessor.kt"); + } + + @Test + @TestMetadata("propertyAccessorFromInside.kt") + public void testPropertyAccessorFromInside() { + runTest("analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/propertyAccessorFromInside.kt"); + } + + @Test + @TestMetadata("propertyField.kt") + public void testPropertyField() { + runTest("analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/propertyField.kt"); + } + + @Test + @TestMetadata("simple.kt") + public void testSimple() { + runTest("analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/simple.kt"); + } + + @Test + @TestMetadata("topLevelFunctionFromInside.kt") + public void testTopLevelFunctionFromInside() { + runTest("analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/topLevelFunctionFromInside.kt"); + } +} diff --git a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/containingDeclarationProvider/FirIdeNormalAnalysisScriptSourceModuleContainingDeclarationProviderByReferenceTestGenerated.java b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/containingDeclarationProvider/FirIdeNormalAnalysisScriptSourceModuleContainingDeclarationProviderByReferenceTestGenerated.java new file mode 100644 index 00000000000..045eeaf628c --- /dev/null +++ b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/containingDeclarationProvider/FirIdeNormalAnalysisScriptSourceModuleContainingDeclarationProviderByReferenceTestGenerated.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.containingDeclarationProvider; + +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.containingDeclarationProvider.AbstractContainingDeclarationProviderByReferenceTest; +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/containingDeclarationProvider/containingDeclarationByReference") +@TestDataPath("$PROJECT_ROOT") +public class FirIdeNormalAnalysisScriptSourceModuleContainingDeclarationProviderByReferenceTestGenerated extends AbstractContainingDeclarationProviderByReferenceTest { + @NotNull + @Override + public AnalysisApiTestConfigurator getConfigurator() { + return AnalysisApiFirTestConfiguratorFactory.INSTANCE.createConfigurator( + new AnalysisApiTestConfiguratorFactoryData( + FrontendKind.Fir, + TestModuleKind.ScriptSource, + AnalysisSessionMode.Normal, + AnalysisApiMode.Ide + ) + ); + } + + @Test + public void testAllFilesPresentInContainingDeclarationByReference() { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference"), 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/containingDeclarationProvider/FirIdeNormalAnalysisSourceModuleContainingDeclarationProviderByReferenceTestGenerated.java b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/containingDeclarationProvider/FirIdeNormalAnalysisSourceModuleContainingDeclarationProviderByReferenceTestGenerated.java new file mode 100644 index 00000000000..d70428ec71f --- /dev/null +++ b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/containingDeclarationProvider/FirIdeNormalAnalysisSourceModuleContainingDeclarationProviderByReferenceTestGenerated.java @@ -0,0 +1,101 @@ +/* + * 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.containingDeclarationProvider; + +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.containingDeclarationProvider.AbstractContainingDeclarationProviderByReferenceTest; +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/containingDeclarationProvider/containingDeclarationByReference") +@TestDataPath("$PROJECT_ROOT") +public class FirIdeNormalAnalysisSourceModuleContainingDeclarationProviderByReferenceTestGenerated extends AbstractContainingDeclarationProviderByReferenceTest { + @NotNull + @Override + public AnalysisApiTestConfigurator getConfigurator() { + return AnalysisApiFirTestConfiguratorFactory.INSTANCE.createConfigurator( + new AnalysisApiTestConfiguratorFactoryData( + FrontendKind.Fir, + TestModuleKind.Source, + AnalysisSessionMode.Normal, + AnalysisApiMode.Ide + ) + ); + } + + @Test + public void testAllFilesPresentInContainingDeclarationByReference() { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference"), Pattern.compile("^(.+)\\.kt$"), null, true); + } + + @Test + @TestMetadata("localFunction.kt") + public void testLocalFunction() { + runTest("analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/localFunction.kt"); + } + + @Test + @TestMetadata("localFunctionFromInside.kt") + public void testLocalFunctionFromInside() { + runTest("analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/localFunctionFromInside.kt"); + } + + @Test + @TestMetadata("nestedClass.kt") + public void testNestedClass() { + runTest("analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/nestedClass.kt"); + } + + @Test + @TestMetadata("nestedClassFromInside.kt") + public void testNestedClassFromInside() { + runTest("analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/nestedClassFromInside.kt"); + } + + @Test + @TestMetadata("propertyAccessor.kt") + public void testPropertyAccessor() { + runTest("analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/propertyAccessor.kt"); + } + + @Test + @TestMetadata("propertyAccessorFromInside.kt") + public void testPropertyAccessorFromInside() { + runTest("analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/propertyAccessorFromInside.kt"); + } + + @Test + @TestMetadata("propertyField.kt") + public void testPropertyField() { + runTest("analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/propertyField.kt"); + } + + @Test + @TestMetadata("simple.kt") + public void testSimple() { + runTest("analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/simple.kt"); + } + + @Test + @TestMetadata("topLevelFunctionFromInside.kt") + public void testTopLevelFunctionFromInside() { + runTest("analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/topLevelFunctionFromInside.kt"); + } +} diff --git a/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/components/containingDeclarationProvider/AbstractContainingDeclarationProviderByReferenceTest.kt b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/components/containingDeclarationProvider/AbstractContainingDeclarationProviderByReferenceTest.kt new file mode 100644 index 00000000000..bcba14ced49 --- /dev/null +++ b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/components/containingDeclarationProvider/AbstractContainingDeclarationProviderByReferenceTest.kt @@ -0,0 +1,46 @@ +/* + * 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.containingDeclarationProvider + +import org.jetbrains.kotlin.analysis.api.symbols.KtCallableSymbol +import org.jetbrains.kotlin.analysis.api.symbols.KtClassLikeSymbol +import org.jetbrains.kotlin.analysis.api.symbols.KtDeclarationSymbol +import org.jetbrains.kotlin.analysis.api.symbols.KtSymbol +import org.jetbrains.kotlin.analysis.api.symbols.markers.KtNamedSymbol +import org.jetbrains.kotlin.analysis.test.framework.base.AbstractAnalysisApiBasedTest +import org.jetbrains.kotlin.analysis.test.framework.services.expressionMarkerProvider +import org.jetbrains.kotlin.idea.references.mainReference +import org.jetbrains.kotlin.psi.KtFile +import org.jetbrains.kotlin.psi.KtReferenceExpression +import org.jetbrains.kotlin.test.model.TestModule +import org.jetbrains.kotlin.test.services.TestServices +import org.jetbrains.kotlin.test.services.assertions + +abstract class AbstractContainingDeclarationProviderByReferenceTest : AbstractAnalysisApiBasedTest() { + override fun doTestByMainFile(mainFile: KtFile, mainModule: TestModule, testServices: TestServices) { + val referenceExpression = testServices.expressionMarkerProvider.getElementOfTypeAtCaret(mainFile) + + analyseForTest(mainFile) { + val ktSymbol = referenceExpression.mainReference.resolveToSymbol() ?: error("Reference is not resolved") + + val actualString = generateSequence(ktSymbol) { it.getContainingSymbol() } + .filterIsInstance() + .joinToString("\n") { render(it) } + + testServices.assertions.assertEqualsToTestDataFileSibling(actualString) + } + } + + private fun render(symbol: KtSymbol): String { + val qualifiedName = when (symbol) { + is KtCallableSymbol -> symbol.callableIdIfNonLocal?.toString() + is KtClassLikeSymbol -> symbol.classIdIfNonLocal?.toString() + else -> null + } + + return qualifiedName ?: (symbol as? KtNamedSymbol)?.name?.asString() ?: "Unnamed" + } +} \ 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/containingDeclarationProvider/FirStandaloneNormalAnalysisSourceModuleContainingDeclarationProviderByReferenceTestGenerated.java b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/containingDeclarationProvider/FirStandaloneNormalAnalysisSourceModuleContainingDeclarationProviderByReferenceTestGenerated.java new file mode 100644 index 00000000000..87632fdbdac --- /dev/null +++ b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/containingDeclarationProvider/FirStandaloneNormalAnalysisSourceModuleContainingDeclarationProviderByReferenceTestGenerated.java @@ -0,0 +1,101 @@ +/* + * 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.containingDeclarationProvider; + +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.containingDeclarationProvider.AbstractContainingDeclarationProviderByReferenceTest; +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/containingDeclarationProvider/containingDeclarationByReference") +@TestDataPath("$PROJECT_ROOT") +public class FirStandaloneNormalAnalysisSourceModuleContainingDeclarationProviderByReferenceTestGenerated extends AbstractContainingDeclarationProviderByReferenceTest { + @NotNull + @Override + public AnalysisApiTestConfigurator getConfigurator() { + return AnalysisApiFirStandaloneModeTestConfiguratorFactory.INSTANCE.createConfigurator( + new AnalysisApiTestConfiguratorFactoryData( + FrontendKind.Fir, + TestModuleKind.Source, + AnalysisSessionMode.Normal, + AnalysisApiMode.Standalone + ) + ); + } + + @Test + public void testAllFilesPresentInContainingDeclarationByReference() { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference"), Pattern.compile("^(.+)\\.kt$"), null, true); + } + + @Test + @TestMetadata("localFunction.kt") + public void testLocalFunction() { + runTest("analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/localFunction.kt"); + } + + @Test + @TestMetadata("localFunctionFromInside.kt") + public void testLocalFunctionFromInside() { + runTest("analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/localFunctionFromInside.kt"); + } + + @Test + @TestMetadata("nestedClass.kt") + public void testNestedClass() { + runTest("analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/nestedClass.kt"); + } + + @Test + @TestMetadata("nestedClassFromInside.kt") + public void testNestedClassFromInside() { + runTest("analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/nestedClassFromInside.kt"); + } + + @Test + @TestMetadata("propertyAccessor.kt") + public void testPropertyAccessor() { + runTest("analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/propertyAccessor.kt"); + } + + @Test + @TestMetadata("propertyAccessorFromInside.kt") + public void testPropertyAccessorFromInside() { + runTest("analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/propertyAccessorFromInside.kt"); + } + + @Test + @TestMetadata("propertyField.kt") + public void testPropertyField() { + runTest("analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/propertyField.kt"); + } + + @Test + @TestMetadata("simple.kt") + public void testSimple() { + runTest("analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/simple.kt"); + } + + @Test + @TestMetadata("topLevelFunctionFromInside.kt") + public void testTopLevelFunctionFromInside() { + runTest("analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/topLevelFunctionFromInside.kt"); + } +} diff --git a/analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/localFunction.kt b/analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/localFunction.kt new file mode 100644 index 00000000000..848b021a087 --- /dev/null +++ b/analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/localFunction.kt @@ -0,0 +1,5 @@ +fun test() { + fun local() {} + + local() +} \ No newline at end of file diff --git a/analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/localFunction.txt b/analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/localFunction.txt new file mode 100644 index 00000000000..969026fbd3f --- /dev/null +++ b/analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/localFunction.txt @@ -0,0 +1,2 @@ +local +/test diff --git a/analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/localFunctionFromInside.kt b/analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/localFunctionFromInside.kt new file mode 100644 index 00000000000..f55b179366a --- /dev/null +++ b/analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/localFunctionFromInside.kt @@ -0,0 +1,5 @@ +fun test() { + fun local() { + local() + } +} \ No newline at end of file diff --git a/analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/localFunctionFromInside.txt b/analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/localFunctionFromInside.txt new file mode 100644 index 00000000000..969026fbd3f --- /dev/null +++ b/analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/localFunctionFromInside.txt @@ -0,0 +1,2 @@ +local +/test diff --git a/analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/nestedClass.kt b/analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/nestedClass.kt new file mode 100644 index 00000000000..23111672377 --- /dev/null +++ b/analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/nestedClass.kt @@ -0,0 +1,9 @@ +class Foo { + class Bar { + fun bar() {} + } +} + +fun test(bar: Foo.Bar) { + bar.bar() +} \ No newline at end of file diff --git a/analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/nestedClass.txt b/analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/nestedClass.txt new file mode 100644 index 00000000000..c46ae1046be --- /dev/null +++ b/analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/nestedClass.txt @@ -0,0 +1,3 @@ +/Foo.Bar.bar +/Foo.Bar +/Foo \ No newline at end of file diff --git a/analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/nestedClassFromInside.kt b/analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/nestedClassFromInside.kt new file mode 100644 index 00000000000..398f811e77b --- /dev/null +++ b/analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/nestedClassFromInside.kt @@ -0,0 +1,7 @@ +class Foo { + class Bar { + fun bar() { + bar() + } + } +} \ No newline at end of file diff --git a/analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/nestedClassFromInside.txt b/analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/nestedClassFromInside.txt new file mode 100644 index 00000000000..c46ae1046be --- /dev/null +++ b/analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/nestedClassFromInside.txt @@ -0,0 +1,3 @@ +/Foo.Bar.bar +/Foo.Bar +/Foo \ No newline at end of file diff --git a/analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/propertyAccessor.kt b/analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/propertyAccessor.kt new file mode 100644 index 00000000000..45eb7f04b7d --- /dev/null +++ b/analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/propertyAccessor.kt @@ -0,0 +1,8 @@ +class Foo { + val foo: String + get() = "foo" +} + +fun test(foo: Foo) { + foo.foo +} \ No newline at end of file diff --git a/analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/propertyAccessor.txt b/analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/propertyAccessor.txt new file mode 100644 index 00000000000..d46fc6e9ada --- /dev/null +++ b/analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/propertyAccessor.txt @@ -0,0 +1,2 @@ +/Foo.foo +/Foo \ No newline at end of file diff --git a/analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/propertyAccessorFromInside.kt b/analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/propertyAccessorFromInside.kt new file mode 100644 index 00000000000..41b7872263d --- /dev/null +++ b/analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/propertyAccessorFromInside.kt @@ -0,0 +1,6 @@ +class Foo { + val foo: String + get() { + return foo + } +} \ No newline at end of file diff --git a/analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/propertyAccessorFromInside.txt b/analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/propertyAccessorFromInside.txt new file mode 100644 index 00000000000..d46fc6e9ada --- /dev/null +++ b/analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/propertyAccessorFromInside.txt @@ -0,0 +1,2 @@ +/Foo.foo +/Foo \ No newline at end of file diff --git a/analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/propertyField.kt b/analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/propertyField.kt new file mode 100644 index 00000000000..6e9e8bbb22f --- /dev/null +++ b/analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/propertyField.kt @@ -0,0 +1,6 @@ +class Foo { + val foo: String = "foo" + get() { + return field + } +} \ No newline at end of file diff --git a/analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/propertyField.txt b/analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/propertyField.txt new file mode 100644 index 00000000000..6eb3c9aec84 --- /dev/null +++ b/analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/propertyField.txt @@ -0,0 +1,3 @@ +field +/Foo.foo +/Foo \ No newline at end of file diff --git a/analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/simple.kt b/analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/simple.kt new file mode 100644 index 00000000000..fc567a673e0 --- /dev/null +++ b/analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/simple.kt @@ -0,0 +1,7 @@ +class Foo { + fun foo() +} + +fun test(foo: Foo) { + foo.foo() +} \ No newline at end of file diff --git a/analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/simple.txt b/analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/simple.txt new file mode 100644 index 00000000000..d46fc6e9ada --- /dev/null +++ b/analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/simple.txt @@ -0,0 +1,2 @@ +/Foo.foo +/Foo \ No newline at end of file diff --git a/analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/topLevelFunctionFromInside.kt b/analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/topLevelFunctionFromInside.kt new file mode 100644 index 00000000000..ad57ae9de1d --- /dev/null +++ b/analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/topLevelFunctionFromInside.kt @@ -0,0 +1,3 @@ +fun foo() { + foo() +} \ No newline at end of file diff --git a/analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/topLevelFunctionFromInside.txt b/analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/topLevelFunctionFromInside.txt new file mode 100644 index 00000000000..7370610cce7 --- /dev/null +++ b/analysis/analysis-api/testData/components/containingDeclarationProvider/containingDeclarationByReference/topLevelFunctionFromInside.txt @@ -0,0 +1 @@ +/foo \ No newline at end of file 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 7ef4ad45319..9967d15ded8 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 @@ -16,6 +16,7 @@ import org.jetbrains.kotlin.analysis.api.impl.base.test.cases.components.compile import org.jetbrains.kotlin.analysis.api.impl.base.test.cases.components.containingDeclarationProvider.AbstractContainingDeclarationProviderByDelegatedMemberScopeTest import org.jetbrains.kotlin.analysis.api.impl.base.test.cases.components.containingDeclarationProvider.AbstractContainingDeclarationProviderByMemberScopeTest import org.jetbrains.kotlin.analysis.api.impl.base.test.cases.components.containingDeclarationProvider.AbstractContainingDeclarationProviderByPsiTest +import org.jetbrains.kotlin.analysis.api.impl.base.test.cases.components.containingDeclarationProvider.AbstractContainingDeclarationProviderByReferenceTest import org.jetbrains.kotlin.analysis.api.impl.base.test.cases.components.containingDeclarationProvider.AbstractContainingDeclarationProviderForSetterParameterTest import org.jetbrains.kotlin.analysis.api.impl.base.test.cases.components.diagnosticProvider.AbstractCodeFragmentCollectDiagnosticsTest import org.jetbrains.kotlin.analysis.api.impl.base.test.cases.components.diagnosticProvider.AbstractCollectDiagnosticsTest @@ -347,6 +348,10 @@ private fun AnalysisApiTestGroup.generateAnalysisApiComponentsTests() { model(it, "containingDeclarationByPsi") } + test { + model(it, "containingDeclarationByReference") + } + test { model(it, "containingDeclarationFromMemberScope") }