diff --git a/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/annotations/Fe10IdeNormalAnalysisSourceModuleAnalysisApiSpecificAnnotationOnDeclarationTestGenerated.java b/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/annotations/Fe10IdeNormalAnalysisSourceModuleAnalysisApiSpecificAnnotationOnDeclarationTestGenerated.java new file mode 100644 index 00000000000..87c4556fd3a --- /dev/null +++ b/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/annotations/Fe10IdeNormalAnalysisSourceModuleAnalysisApiSpecificAnnotationOnDeclarationTestGenerated.java @@ -0,0 +1,78 @@ +/* + * Copyright 2010-2023 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.fe10.test.cases.generated.cases.annotations; + +import com.intellij.testFramework.TestDataPath; +import org.jetbrains.kotlin.test.util.KtTestUtil; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.kotlin.analysis.api.fe10.test.configurator.AnalysisApiFe10TestConfiguratorFactory; +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.annotations.AbstractAnalysisApiSpecificAnnotationOnDeclarationTest; +import org.jetbrains.kotlin.test.TestMetadata; +import org.junit.jupiter.api.Nested; +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/annotations/specificAnnotations") +@TestDataPath("$PROJECT_ROOT") +public class Fe10IdeNormalAnalysisSourceModuleAnalysisApiSpecificAnnotationOnDeclarationTestGenerated extends AbstractAnalysisApiSpecificAnnotationOnDeclarationTest { + @NotNull + @Override + public AnalysisApiTestConfigurator getConfigurator() { + return AnalysisApiFe10TestConfiguratorFactory.INSTANCE.createConfigurator( + new AnalysisApiTestConfiguratorFactoryData( + FrontendKind.Fe10, + TestModuleKind.Source, + AnalysisSessionMode.Normal, + AnalysisApiMode.Ide + ) + ); + } + + @Test + public void testAllFilesPresentInSpecificAnnotations() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/annotations/specificAnnotations"), Pattern.compile("^(.+)\\.kt$"), null, true); + } + + @Test + @TestMetadata("targetAnnotationWithEmptyArguments.kt") + public void testTargetAnnotationWithEmptyArguments() throws Exception { + runTest("analysis/analysis-api/testData/annotations/specificAnnotations/targetAnnotationWithEmptyArguments.kt"); + } + + @Test + @TestMetadata("targetAnnotationWithOneArgument.kt") + public void testTargetAnnotationWithOneArgument() throws Exception { + runTest("analysis/analysis-api/testData/annotations/specificAnnotations/targetAnnotationWithOneArgument.kt"); + } + + @Test + @TestMetadata("targetAnnotationWithOneArgumentAsImport.kt") + public void testTargetAnnotationWithOneArgumentAsImport() throws Exception { + runTest("analysis/analysis-api/testData/annotations/specificAnnotations/targetAnnotationWithOneArgumentAsImport.kt"); + } + + @Test + @TestMetadata("targetAnnotationWithSeveralArguments.kt") + public void testTargetAnnotationWithSeveralArguments() throws Exception { + runTest("analysis/analysis-api/testData/annotations/specificAnnotations/targetAnnotationWithSeveralArguments.kt"); + } + + @Test + @TestMetadata("targetAnnotationWithoutArguments.kt") + public void testTargetAnnotationWithoutArguments() throws Exception { + runTest("analysis/analysis-api/testData/annotations/specificAnnotations/targetAnnotationWithoutArguments.kt"); + } +} diff --git a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/annotations/FirIdeDependentAnalysisSourceModuleAnalysisApiSpecificAnnotationOnDeclarationTestGenerated.java b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/annotations/FirIdeDependentAnalysisSourceModuleAnalysisApiSpecificAnnotationOnDeclarationTestGenerated.java new file mode 100644 index 00000000000..ea21d6039c4 --- /dev/null +++ b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/annotations/FirIdeDependentAnalysisSourceModuleAnalysisApiSpecificAnnotationOnDeclarationTestGenerated.java @@ -0,0 +1,78 @@ +/* + * Copyright 2010-2023 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.annotations; + +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.annotations.AbstractAnalysisApiSpecificAnnotationOnDeclarationTest; +import org.jetbrains.kotlin.test.TestMetadata; +import org.junit.jupiter.api.Nested; +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/annotations/specificAnnotations") +@TestDataPath("$PROJECT_ROOT") +public class FirIdeDependentAnalysisSourceModuleAnalysisApiSpecificAnnotationOnDeclarationTestGenerated extends AbstractAnalysisApiSpecificAnnotationOnDeclarationTest { + @NotNull + @Override + public AnalysisApiTestConfigurator getConfigurator() { + return AnalysisApiFirTestConfiguratorFactory.INSTANCE.createConfigurator( + new AnalysisApiTestConfiguratorFactoryData( + FrontendKind.Fir, + TestModuleKind.Source, + AnalysisSessionMode.Dependent, + AnalysisApiMode.Ide + ) + ); + } + + @Test + public void testAllFilesPresentInSpecificAnnotations() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/annotations/specificAnnotations"), Pattern.compile("^(.+)\\.kt$"), null, true); + } + + @Test + @TestMetadata("targetAnnotationWithEmptyArguments.kt") + public void testTargetAnnotationWithEmptyArguments() throws Exception { + runTest("analysis/analysis-api/testData/annotations/specificAnnotations/targetAnnotationWithEmptyArguments.kt"); + } + + @Test + @TestMetadata("targetAnnotationWithOneArgument.kt") + public void testTargetAnnotationWithOneArgument() throws Exception { + runTest("analysis/analysis-api/testData/annotations/specificAnnotations/targetAnnotationWithOneArgument.kt"); + } + + @Test + @TestMetadata("targetAnnotationWithOneArgumentAsImport.kt") + public void testTargetAnnotationWithOneArgumentAsImport() throws Exception { + runTest("analysis/analysis-api/testData/annotations/specificAnnotations/targetAnnotationWithOneArgumentAsImport.kt"); + } + + @Test + @TestMetadata("targetAnnotationWithSeveralArguments.kt") + public void testTargetAnnotationWithSeveralArguments() throws Exception { + runTest("analysis/analysis-api/testData/annotations/specificAnnotations/targetAnnotationWithSeveralArguments.kt"); + } + + @Test + @TestMetadata("targetAnnotationWithoutArguments.kt") + public void testTargetAnnotationWithoutArguments() throws Exception { + runTest("analysis/analysis-api/testData/annotations/specificAnnotations/targetAnnotationWithoutArguments.kt"); + } +} diff --git a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/annotations/FirIdeNormalAnalysisSourceModuleAnalysisApiSpecificAnnotationOnDeclarationTestGenerated.java b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/annotations/FirIdeNormalAnalysisSourceModuleAnalysisApiSpecificAnnotationOnDeclarationTestGenerated.java new file mode 100644 index 00000000000..28307a0af88 --- /dev/null +++ b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/annotations/FirIdeNormalAnalysisSourceModuleAnalysisApiSpecificAnnotationOnDeclarationTestGenerated.java @@ -0,0 +1,78 @@ +/* + * Copyright 2010-2023 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.annotations; + +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.annotations.AbstractAnalysisApiSpecificAnnotationOnDeclarationTest; +import org.jetbrains.kotlin.test.TestMetadata; +import org.junit.jupiter.api.Nested; +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/annotations/specificAnnotations") +@TestDataPath("$PROJECT_ROOT") +public class FirIdeNormalAnalysisSourceModuleAnalysisApiSpecificAnnotationOnDeclarationTestGenerated extends AbstractAnalysisApiSpecificAnnotationOnDeclarationTest { + @NotNull + @Override + public AnalysisApiTestConfigurator getConfigurator() { + return AnalysisApiFirTestConfiguratorFactory.INSTANCE.createConfigurator( + new AnalysisApiTestConfiguratorFactoryData( + FrontendKind.Fir, + TestModuleKind.Source, + AnalysisSessionMode.Normal, + AnalysisApiMode.Ide + ) + ); + } + + @Test + public void testAllFilesPresentInSpecificAnnotations() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/annotations/specificAnnotations"), Pattern.compile("^(.+)\\.kt$"), null, true); + } + + @Test + @TestMetadata("targetAnnotationWithEmptyArguments.kt") + public void testTargetAnnotationWithEmptyArguments() throws Exception { + runTest("analysis/analysis-api/testData/annotations/specificAnnotations/targetAnnotationWithEmptyArguments.kt"); + } + + @Test + @TestMetadata("targetAnnotationWithOneArgument.kt") + public void testTargetAnnotationWithOneArgument() throws Exception { + runTest("analysis/analysis-api/testData/annotations/specificAnnotations/targetAnnotationWithOneArgument.kt"); + } + + @Test + @TestMetadata("targetAnnotationWithOneArgumentAsImport.kt") + public void testTargetAnnotationWithOneArgumentAsImport() throws Exception { + runTest("analysis/analysis-api/testData/annotations/specificAnnotations/targetAnnotationWithOneArgumentAsImport.kt"); + } + + @Test + @TestMetadata("targetAnnotationWithSeveralArguments.kt") + public void testTargetAnnotationWithSeveralArguments() throws Exception { + runTest("analysis/analysis-api/testData/annotations/specificAnnotations/targetAnnotationWithSeveralArguments.kt"); + } + + @Test + @TestMetadata("targetAnnotationWithoutArguments.kt") + public void testTargetAnnotationWithoutArguments() throws Exception { + runTest("analysis/analysis-api/testData/annotations/specificAnnotations/targetAnnotationWithoutArguments.kt"); + } +} diff --git a/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/annotations/AbstractAnalysisApiSpecificAnnotationOnDeclarationTest.kt b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/annotations/AbstractAnalysisApiSpecificAnnotationOnDeclarationTest.kt new file mode 100644 index 00000000000..7c0dc2f2cca --- /dev/null +++ b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/annotations/AbstractAnalysisApiSpecificAnnotationOnDeclarationTest.kt @@ -0,0 +1,60 @@ +/* + * Copyright 2010-2023 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.annotations + +import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationApplication +import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationsList +import org.jetbrains.kotlin.analysis.api.symbols.DebugSymbolRenderer +import org.jetbrains.kotlin.analysis.api.symbols.markers.KtAnnotatedSymbol +import org.jetbrains.kotlin.analysis.test.framework.base.AbstractAnalysisApiSingleFileTest +import org.jetbrains.kotlin.analysis.test.framework.services.expressionMarkerProvider +import org.jetbrains.kotlin.name.ClassId +import org.jetbrains.kotlin.psi.KtDeclaration +import org.jetbrains.kotlin.psi.KtFile +import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder +import org.jetbrains.kotlin.test.directives.model.SimpleDirectivesContainer +import org.jetbrains.kotlin.test.directives.model.singleValue +import org.jetbrains.kotlin.test.model.TestModule +import org.jetbrains.kotlin.test.services.TestServices +import org.jetbrains.kotlin.test.services.assertions + +abstract class AbstractAnalysisApiSpecificAnnotationOnDeclarationTest : AbstractAnalysisApiSingleFileTest() { + override fun configureTest(builder: TestConfigurationBuilder) { + super.configureTest(builder) + builder.useDirectives(Directives) + } + + override fun doTestByFileStructure(ktFile: KtFile, module: TestModule, testServices: TestServices) { + val ktDeclaration = testServices.expressionMarkerProvider.getElementOfTypeAtCaret(ktFile) + val classIdString = module.directives.singleValue(Directives.CLASS_ID) + + val actual = analyseForTest(ktDeclaration) { + val declarationSymbol = ktDeclaration.getSymbol() as KtAnnotatedSymbol + val annotationList = declarationSymbol.annotationsList + val classId = ClassId.fromString(classIdString) + val renderer = DebugSymbolRenderer() + fun renderAnnotation(application: KtAnnotationApplication): String = buildString { + appendLine("KtDeclaration: ${ktDeclaration::class.simpleName} ${ktDeclaration.name}") + append(renderer.renderAnnotationApplication(application)) + } + + val rawList = renderAnnotation(annotationList.annotationsByClassId(classId).single()) + val resolvedList = renderAnnotation(annotationList.annotations.single { it.classId == classId }) + testServices.assertions.assertEquals(resolvedList, rawList) { + "Result before and after resolve are different" + } + + resolvedList + } + + testServices.assertions.assertEqualsToTestDataFileSibling(actual) + } + + private object Directives : SimpleDirectivesContainer() { + val CLASS_ID by stringDirective("ClassId of expected annotation") + } +} + diff --git a/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/annotations/FirStandaloneNormalAnalysisSourceModuleAnalysisApiSpecificAnnotationOnDeclarationTestGenerated.java b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/annotations/FirStandaloneNormalAnalysisSourceModuleAnalysisApiSpecificAnnotationOnDeclarationTestGenerated.java new file mode 100644 index 00000000000..e1ffc77a44f --- /dev/null +++ b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/annotations/FirStandaloneNormalAnalysisSourceModuleAnalysisApiSpecificAnnotationOnDeclarationTestGenerated.java @@ -0,0 +1,78 @@ +/* + * Copyright 2010-2023 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.annotations; + +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.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.annotations.AbstractAnalysisApiSpecificAnnotationOnDeclarationTest; +import org.jetbrains.kotlin.test.TestMetadata; +import org.junit.jupiter.api.Nested; +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/annotations/specificAnnotations") +@TestDataPath("$PROJECT_ROOT") +public class FirStandaloneNormalAnalysisSourceModuleAnalysisApiSpecificAnnotationOnDeclarationTestGenerated extends AbstractAnalysisApiSpecificAnnotationOnDeclarationTest { + @NotNull + @Override + public AnalysisApiTestConfigurator getConfigurator() { + return AnalysisApiFirStandaloneModeTestConfiguratorFactory.INSTANCE.createConfigurator( + new AnalysisApiTestConfiguratorFactoryData( + FrontendKind.Fir, + TestModuleKind.Source, + AnalysisSessionMode.Normal, + AnalysisApiMode.Standalone + ) + ); + } + + @Test + public void testAllFilesPresentInSpecificAnnotations() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/annotations/specificAnnotations"), Pattern.compile("^(.+)\\.kt$"), null, true); + } + + @Test + @TestMetadata("targetAnnotationWithEmptyArguments.kt") + public void testTargetAnnotationWithEmptyArguments() throws Exception { + runTest("analysis/analysis-api/testData/annotations/specificAnnotations/targetAnnotationWithEmptyArguments.kt"); + } + + @Test + @TestMetadata("targetAnnotationWithOneArgument.kt") + public void testTargetAnnotationWithOneArgument() throws Exception { + runTest("analysis/analysis-api/testData/annotations/specificAnnotations/targetAnnotationWithOneArgument.kt"); + } + + @Test + @TestMetadata("targetAnnotationWithOneArgumentAsImport.kt") + public void testTargetAnnotationWithOneArgumentAsImport() throws Exception { + runTest("analysis/analysis-api/testData/annotations/specificAnnotations/targetAnnotationWithOneArgumentAsImport.kt"); + } + + @Test + @TestMetadata("targetAnnotationWithSeveralArguments.kt") + public void testTargetAnnotationWithSeveralArguments() throws Exception { + runTest("analysis/analysis-api/testData/annotations/specificAnnotations/targetAnnotationWithSeveralArguments.kt"); + } + + @Test + @TestMetadata("targetAnnotationWithoutArguments.kt") + public void testTargetAnnotationWithoutArguments() throws Exception { + runTest("analysis/analysis-api/testData/annotations/specificAnnotations/targetAnnotationWithoutArguments.kt"); + } +} diff --git a/analysis/analysis-api/testData/annotations/specificAnnotations/targetAnnotationWithEmptyArguments.descriptors.txt b/analysis/analysis-api/testData/annotations/specificAnnotations/targetAnnotationWithEmptyArguments.descriptors.txt new file mode 100644 index 00000000000..dd040413b92 --- /dev/null +++ b/analysis/analysis-api/testData/annotations/specificAnnotations/targetAnnotationWithEmptyArguments.descriptors.txt @@ -0,0 +1,3 @@ +KtDeclaration: KtClass KotlinAnnotation +kotlin/annotation/Target(allowedTargets = []) + psi: KtAnnotationEntry \ No newline at end of file diff --git a/analysis/analysis-api/testData/annotations/specificAnnotations/targetAnnotationWithEmptyArguments.kt b/analysis/analysis-api/testData/annotations/specificAnnotations/targetAnnotationWithEmptyArguments.kt new file mode 100644 index 00000000000..6070de31c85 --- /dev/null +++ b/analysis/analysis-api/testData/annotations/specificAnnotations/targetAnnotationWithEmptyArguments.kt @@ -0,0 +1,5 @@ +// WITH_STDLIB +// CLASS_ID: kotlin.annotation/Target + +@Target() +annotation class KotlinAnnotation \ No newline at end of file diff --git a/analysis/analysis-api/testData/annotations/specificAnnotations/targetAnnotationWithEmptyArguments.txt b/analysis/analysis-api/testData/annotations/specificAnnotations/targetAnnotationWithEmptyArguments.txt new file mode 100644 index 00000000000..8ff08338d58 --- /dev/null +++ b/analysis/analysis-api/testData/annotations/specificAnnotations/targetAnnotationWithEmptyArguments.txt @@ -0,0 +1,3 @@ +KtDeclaration: KtClass KotlinAnnotation +kotlin/annotation/Target() + psi: KtAnnotationEntry \ No newline at end of file diff --git a/analysis/analysis-api/testData/annotations/specificAnnotations/targetAnnotationWithOneArgument.kt b/analysis/analysis-api/testData/annotations/specificAnnotations/targetAnnotationWithOneArgument.kt new file mode 100644 index 00000000000..ab3436e7dec --- /dev/null +++ b/analysis/analysis-api/testData/annotations/specificAnnotations/targetAnnotationWithOneArgument.kt @@ -0,0 +1,5 @@ +// WITH_STDLIB +// CLASS_ID: kotlin.annotation/Target + +@Target(AnnotationTarget.CLASS) +annotation class KotlinAnnotation \ No newline at end of file diff --git a/analysis/analysis-api/testData/annotations/specificAnnotations/targetAnnotationWithOneArgument.txt b/analysis/analysis-api/testData/annotations/specificAnnotations/targetAnnotationWithOneArgument.txt new file mode 100644 index 00000000000..6c3d7ab5e84 --- /dev/null +++ b/analysis/analysis-api/testData/annotations/specificAnnotations/targetAnnotationWithOneArgument.txt @@ -0,0 +1,3 @@ +KtDeclaration: KtClass KotlinAnnotation +kotlin/annotation/Target(allowedTargets = [kotlin.annotation.AnnotationTarget.CLASS]) + psi: KtAnnotationEntry \ No newline at end of file diff --git a/analysis/analysis-api/testData/annotations/specificAnnotations/targetAnnotationWithOneArgumentAsImport.kt b/analysis/analysis-api/testData/annotations/specificAnnotations/targetAnnotationWithOneArgumentAsImport.kt new file mode 100644 index 00000000000..e3c51678157 --- /dev/null +++ b/analysis/analysis-api/testData/annotations/specificAnnotations/targetAnnotationWithOneArgumentAsImport.kt @@ -0,0 +1,7 @@ +// WITH_STDLIB +// CLASS_ID: kotlin.annotation/Target + +import kotlin.annotation.AnnotationTarget.CLASS + +@Target(CLASS) +annotation class KotlinAnnotation \ No newline at end of file diff --git a/analysis/analysis-api/testData/annotations/specificAnnotations/targetAnnotationWithOneArgumentAsImport.txt b/analysis/analysis-api/testData/annotations/specificAnnotations/targetAnnotationWithOneArgumentAsImport.txt new file mode 100644 index 00000000000..6c3d7ab5e84 --- /dev/null +++ b/analysis/analysis-api/testData/annotations/specificAnnotations/targetAnnotationWithOneArgumentAsImport.txt @@ -0,0 +1,3 @@ +KtDeclaration: KtClass KotlinAnnotation +kotlin/annotation/Target(allowedTargets = [kotlin.annotation.AnnotationTarget.CLASS]) + psi: KtAnnotationEntry \ No newline at end of file diff --git a/analysis/analysis-api/testData/annotations/specificAnnotations/targetAnnotationWithSeveralArguments.kt b/analysis/analysis-api/testData/annotations/specificAnnotations/targetAnnotationWithSeveralArguments.kt new file mode 100644 index 00000000000..119771efda0 --- /dev/null +++ b/analysis/analysis-api/testData/annotations/specificAnnotations/targetAnnotationWithSeveralArguments.kt @@ -0,0 +1,7 @@ +// WITH_STDLIB +// CLASS_ID: kotlin.annotation/Target + +import kotlin.annotation.AnnotationTarget.CLASS + +@Target(CLASS, AnnotationTarget.TYPE) +annotation class KotlinAnnotation \ No newline at end of file diff --git a/analysis/analysis-api/testData/annotations/specificAnnotations/targetAnnotationWithSeveralArguments.txt b/analysis/analysis-api/testData/annotations/specificAnnotations/targetAnnotationWithSeveralArguments.txt new file mode 100644 index 00000000000..bcd200b7d76 --- /dev/null +++ b/analysis/analysis-api/testData/annotations/specificAnnotations/targetAnnotationWithSeveralArguments.txt @@ -0,0 +1,3 @@ +KtDeclaration: KtClass KotlinAnnotation +kotlin/annotation/Target(allowedTargets = [kotlin.annotation.AnnotationTarget.CLASS, kotlin.annotation.AnnotationTarget.TYPE]) + psi: KtAnnotationEntry \ No newline at end of file diff --git a/analysis/analysis-api/testData/annotations/specificAnnotations/targetAnnotationWithoutArguments.descriptors.txt b/analysis/analysis-api/testData/annotations/specificAnnotations/targetAnnotationWithoutArguments.descriptors.txt new file mode 100644 index 00000000000..dd040413b92 --- /dev/null +++ b/analysis/analysis-api/testData/annotations/specificAnnotations/targetAnnotationWithoutArguments.descriptors.txt @@ -0,0 +1,3 @@ +KtDeclaration: KtClass KotlinAnnotation +kotlin/annotation/Target(allowedTargets = []) + psi: KtAnnotationEntry \ No newline at end of file diff --git a/analysis/analysis-api/testData/annotations/specificAnnotations/targetAnnotationWithoutArguments.kt b/analysis/analysis-api/testData/annotations/specificAnnotations/targetAnnotationWithoutArguments.kt new file mode 100644 index 00000000000..a8ed8d7c683 --- /dev/null +++ b/analysis/analysis-api/testData/annotations/specificAnnotations/targetAnnotationWithoutArguments.kt @@ -0,0 +1,5 @@ +// WITH_STDLIB +// CLASS_ID: kotlin.annotation/Target + +@Target +annotation class KotlinAnnotation \ No newline at end of file diff --git a/analysis/analysis-api/testData/annotations/specificAnnotations/targetAnnotationWithoutArguments.txt b/analysis/analysis-api/testData/annotations/specificAnnotations/targetAnnotationWithoutArguments.txt new file mode 100644 index 00000000000..8ff08338d58 --- /dev/null +++ b/analysis/analysis-api/testData/annotations/specificAnnotations/targetAnnotationWithoutArguments.txt @@ -0,0 +1,3 @@ +KtDeclaration: KtClass KotlinAnnotation +kotlin/annotation/Target() + psi: KtAnnotationEntry \ 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 95717147746..d1eaaace8ea 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 @@ -1,11 +1,12 @@ /* - * Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2023 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.generators.tests.analysis.api import org.jetbrains.kotlin.analysis.api.impl.base.test.cases.annotations.AbstractAnalysisApiAnnotationsOnDeclarationsTest +import org.jetbrains.kotlin.analysis.api.impl.base.test.cases.annotations.AbstractAnalysisApiSpecificAnnotationOnDeclarationTest import org.jetbrains.kotlin.analysis.api.impl.base.test.cases.annotations.AbstractAnalysisApiAnnotationsOnDeclarationsWithMetaTest import org.jetbrains.kotlin.analysis.api.impl.base.test.cases.annotations.AbstractAnalysisApiAnnotationsOnFilesTest import org.jetbrains.kotlin.analysis.api.impl.base.test.cases.annotations.AbstractAnalysisApiAnnotationsOnTypesTest @@ -154,6 +155,10 @@ private fun AnalysisApiTestGroup.generateAnalysisApiNonComponentsTests() { model("annotationsOnDeclaration") } + test(AbstractAnalysisApiSpecificAnnotationOnDeclarationTest::class) { + model("specificAnnotations") + } + test( AbstractAnalysisApiAnnotationsOnFilesTest::class, filter = analysisSessionModeIs(AnalysisSessionMode.Normal),