diff --git a/analysis/analysis-api-fe10/tests/org/jetbrains/kotlin/analysis/api/descriptors/test/annotations/AbstractAnalysisApiFirAnnotationsOnTypesTest.kt b/analysis/analysis-api-fe10/tests/org/jetbrains/kotlin/analysis/api/descriptors/test/annotations/AbstractAnalysisApiFirAnnotationsOnTypesTest.kt new file mode 100644 index 00000000000..8524316e3b3 --- /dev/null +++ b/analysis/analysis-api-fe10/tests/org/jetbrains/kotlin/analysis/api/descriptors/test/annotations/AbstractAnalysisApiFirAnnotationsOnTypesTest.kt @@ -0,0 +1,12 @@ +/* + * Copyright 2010-2021 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.descriptors.test.annotations + +import org.jetbrains.kotlin.analysis.api.descriptors.test.KtFe10FrontendApiTestConfiguratorService +import org.jetbrains.kotlin.analysis.api.impl.base.test.annotations.AbstractAnalysisApiAnnotationsOnTypesTest + +abstract class AbstractAnalysisApiFe10AnnotationsOnTypesTest : + AbstractAnalysisApiAnnotationsOnTypesTest(KtFe10FrontendApiTestConfiguratorService) \ No newline at end of file diff --git a/analysis/analysis-api-fe10/tests/org/jetbrains/kotlin/analysis/api/descriptors/test/annotations/AnalysisApiFe10AnnotationsOnTypesTestGenerated.java b/analysis/analysis-api-fe10/tests/org/jetbrains/kotlin/analysis/api/descriptors/test/annotations/AnalysisApiFe10AnnotationsOnTypesTestGenerated.java new file mode 100644 index 00000000000..b309e1bca57 --- /dev/null +++ b/analysis/analysis-api-fe10/tests/org/jetbrains/kotlin/analysis/api/descriptors/test/annotations/AnalysisApiFe10AnnotationsOnTypesTestGenerated.java @@ -0,0 +1,68 @@ +/* + * Copyright 2010-2021 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.descriptors.test.annotations; + +import com.intellij.testFramework.TestDataPath; +import org.jetbrains.kotlin.test.util.KtTestUtil; +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 GenerateNewCompilerTests.kt}. DO NOT MODIFY MANUALLY */ +@SuppressWarnings("all") +@TestMetadata("analysis/analysis-api/testData/annotations/annotationsOnTypes") +@TestDataPath("$PROJECT_ROOT") +public class AnalysisApiFe10AnnotationsOnTypesTestGenerated extends AbstractAnalysisApiFe10AnnotationsOnTypesTest { + @Test + public void testAllFilesPresentInAnnotationsOnTypes() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/annotations/annotationsOnTypes"), Pattern.compile("^(.+)\\.kt$"), null, true); + } + + @Test + @TestMetadata("annotaionOnType.kt") + public void testAnnotaionOnType() throws Exception { + runTest("analysis/analysis-api/testData/annotations/annotationsOnTypes/annotaionOnType.kt"); + } + + @Test + @TestMetadata("annotaionOnTypeArgument.kt") + public void testAnnotaionOnTypeArgument() throws Exception { + runTest("analysis/analysis-api/testData/annotations/annotationsOnTypes/annotaionOnTypeArgument.kt"); + } + + @Test + @TestMetadata("annotaionOnTypeArgumentOfTypeArgument.kt") + public void testAnnotaionOnTypeArgumentOfTypeArgument() throws Exception { + runTest("analysis/analysis-api/testData/annotations/annotationsOnTypes/annotaionOnTypeArgumentOfTypeArgument.kt"); + } + + @Test + @TestMetadata("annotaionWithComplexArgumentOnType.kt") + public void testAnnotaionWithComplexArgumentOnType() throws Exception { + runTest("analysis/analysis-api/testData/annotations/annotationsOnTypes/annotaionWithComplexArgumentOnType.kt"); + } + + @Test + @TestMetadata("annotaionWithComplexArgumentOnTypeArgument.kt") + public void testAnnotaionWithComplexArgumentOnTypeArgument() throws Exception { + runTest("analysis/analysis-api/testData/annotations/annotationsOnTypes/annotaionWithComplexArgumentOnTypeArgument.kt"); + } + + @Test + @TestMetadata("annotaionWithLiteralArgumentOnType.kt") + public void testAnnotaionWithLiteralArgumentOnType() throws Exception { + runTest("analysis/analysis-api/testData/annotations/annotationsOnTypes/annotaionWithLiteralArgumentOnType.kt"); + } + + @Test + @TestMetadata("annotaionWithLiteralArgumentOnTypeArgument.kt") + public void testAnnotaionWithLiteralArgumentOnTypeArgument() throws Exception { + runTest("analysis/analysis-api/testData/annotations/annotationsOnTypes/annotaionWithLiteralArgumentOnTypeArgument.kt"); + } +} diff --git a/analysis/analysis-api-fir/tests/org/jetbrains/kotlin/analysis/api/fir/annotations/AbstractAnalysisApiFirAnnotationsOnTypesTest.kt b/analysis/analysis-api-fir/tests/org/jetbrains/kotlin/analysis/api/fir/annotations/AbstractAnalysisApiFirAnnotationsOnTypesTest.kt new file mode 100644 index 00000000000..7c8eb85f776 --- /dev/null +++ b/analysis/analysis-api-fir/tests/org/jetbrains/kotlin/analysis/api/fir/annotations/AbstractAnalysisApiFirAnnotationsOnTypesTest.kt @@ -0,0 +1,12 @@ +/* + * Copyright 2010-2021 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.annotations + +import org.jetbrains.kotlin.analysis.api.fir.FirFrontendApiTestConfiguratorService +import org.jetbrains.kotlin.analysis.api.impl.base.test.annotations.AbstractAnalysisApiAnnotationsOnTypesTest + +abstract class AbstractAnalysisApiFirAnnotationsOnTypesTest : + AbstractAnalysisApiAnnotationsOnTypesTest(FirFrontendApiTestConfiguratorService) \ No newline at end of file diff --git a/analysis/analysis-api-fir/tests/org/jetbrains/kotlin/analysis/api/fir/annotations/AnalysisApiFirAnnotationsOnTypesTestGenerated.java b/analysis/analysis-api-fir/tests/org/jetbrains/kotlin/analysis/api/fir/annotations/AnalysisApiFirAnnotationsOnTypesTestGenerated.java new file mode 100644 index 00000000000..96625861f58 --- /dev/null +++ b/analysis/analysis-api-fir/tests/org/jetbrains/kotlin/analysis/api/fir/annotations/AnalysisApiFirAnnotationsOnTypesTestGenerated.java @@ -0,0 +1,68 @@ +/* + * Copyright 2010-2021 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.annotations; + +import com.intellij.testFramework.TestDataPath; +import org.jetbrains.kotlin.test.util.KtTestUtil; +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 GenerateNewCompilerTests.kt}. DO NOT MODIFY MANUALLY */ +@SuppressWarnings("all") +@TestMetadata("analysis/analysis-api/testData/annotations/annotationsOnTypes") +@TestDataPath("$PROJECT_ROOT") +public class AnalysisApiFirAnnotationsOnTypesTestGenerated extends AbstractAnalysisApiFirAnnotationsOnTypesTest { + @Test + public void testAllFilesPresentInAnnotationsOnTypes() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/annotations/annotationsOnTypes"), Pattern.compile("^(.+)\\.kt$"), null, true); + } + + @Test + @TestMetadata("annotaionOnType.kt") + public void testAnnotaionOnType() throws Exception { + runTest("analysis/analysis-api/testData/annotations/annotationsOnTypes/annotaionOnType.kt"); + } + + @Test + @TestMetadata("annotaionOnTypeArgument.kt") + public void testAnnotaionOnTypeArgument() throws Exception { + runTest("analysis/analysis-api/testData/annotations/annotationsOnTypes/annotaionOnTypeArgument.kt"); + } + + @Test + @TestMetadata("annotaionOnTypeArgumentOfTypeArgument.kt") + public void testAnnotaionOnTypeArgumentOfTypeArgument() throws Exception { + runTest("analysis/analysis-api/testData/annotations/annotationsOnTypes/annotaionOnTypeArgumentOfTypeArgument.kt"); + } + + @Test + @TestMetadata("annotaionWithComplexArgumentOnType.kt") + public void testAnnotaionWithComplexArgumentOnType() throws Exception { + runTest("analysis/analysis-api/testData/annotations/annotationsOnTypes/annotaionWithComplexArgumentOnType.kt"); + } + + @Test + @TestMetadata("annotaionWithComplexArgumentOnTypeArgument.kt") + public void testAnnotaionWithComplexArgumentOnTypeArgument() throws Exception { + runTest("analysis/analysis-api/testData/annotations/annotationsOnTypes/annotaionWithComplexArgumentOnTypeArgument.kt"); + } + + @Test + @TestMetadata("annotaionWithLiteralArgumentOnType.kt") + public void testAnnotaionWithLiteralArgumentOnType() throws Exception { + runTest("analysis/analysis-api/testData/annotations/annotationsOnTypes/annotaionWithLiteralArgumentOnType.kt"); + } + + @Test + @TestMetadata("annotaionWithLiteralArgumentOnTypeArgument.kt") + public void testAnnotaionWithLiteralArgumentOnTypeArgument() throws Exception { + runTest("analysis/analysis-api/testData/annotations/annotationsOnTypes/annotaionWithLiteralArgumentOnTypeArgument.kt"); + } +} diff --git a/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/annotations/AnalysisApiAnnotationsOnTypesTest.kt b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/annotations/AnalysisApiAnnotationsOnTypesTest.kt new file mode 100644 index 00000000000..d63128d2244 --- /dev/null +++ b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/annotations/AnalysisApiAnnotationsOnTypesTest.kt @@ -0,0 +1,43 @@ +/* + * Copyright 2010-2021 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.annotations + +import org.jetbrains.kotlin.analysis.api.annotations.annotations +import org.jetbrains.kotlin.analysis.api.impl.barebone.test.FrontendApiTestConfiguratorService +import org.jetbrains.kotlin.analysis.api.impl.barebone.test.expressionMarkerProvider +import org.jetbrains.kotlin.analysis.api.impl.base.test.indented +import org.jetbrains.kotlin.analysis.api.impl.base.test.test.framework.AbstractHLApiSingleFileTest +import org.jetbrains.kotlin.analysis.api.symbols.DebugSymbolRenderer +import org.jetbrains.kotlin.psi.KtFile +import org.jetbrains.kotlin.psi.KtTypeReference +import org.jetbrains.kotlin.test.model.TestModule +import org.jetbrains.kotlin.test.services.TestServices +import org.jetbrains.kotlin.test.services.assertions + +abstract class AbstractAnalysisApiAnnotationsOnTypesTest( + configurator: FrontendApiTestConfiguratorService +) : AbstractHLApiSingleFileTest(configurator) { + + override fun doTestByFileStructure(ktFile: KtFile, module: TestModule, testServices: TestServices) { + val ktTypeReference = testServices.expressionMarkerProvider + .getElementOfTypAtCaret(ktFile) + val actual = analyseForTest(ktFile) { + val ktType = ktTypeReference.getKtType() + val annotations = ktType.annotations + buildString { + appendLine("KtTypeReference: ${ktTypeReference.text}") + appendLine("annotations: [") + for (annotation in annotations) { + appendLine(DebugSymbolRenderer.renderAnnotationApplication(annotation).indented(indent = 2)) + } + appendLine("]") + } + } + + testServices.assertions.assertEqualsToTestDataFileSibling(actual) + } +} + diff --git a/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/commonTestUtils.kt b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/commonTestUtils.kt index 9c30879d886..5dc01f188f1 100644 --- a/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/commonTestUtils.kt +++ b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/commonTestUtils.kt @@ -40,4 +40,9 @@ fun KtSymbol.getNameWithPositionString(): String { null -> "null" else -> psi::class.simpleName } + "@" + psi.position() +} + +fun String.indented(indent: Int): String { + val indentString = " ".repeat(indent) + return indentString + replace("\n", "\n$indentString") } \ No newline at end of file diff --git a/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/test/framework/AbstractHLApiSingleFileTest.kt b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/test/framework/AbstractHLApiSingleFileTest.kt index 6fd1687afb1..5dfeb99a850 100644 --- a/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/test/framework/AbstractHLApiSingleFileTest.kt +++ b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/test/framework/AbstractHLApiSingleFileTest.kt @@ -12,7 +12,7 @@ import org.jetbrains.kotlin.test.services.TestServices abstract class AbstractHLApiSingleFileTest(configurator: FrontendApiTestConfiguratorService) : AbstractHLApiSingleModuleTest(configurator) { final override fun doTestByFileStructure(ktFiles: List, module: TestModule, testServices: TestServices) { - val singleFile = ktFiles.single() + val singleFile = ktFiles.singleOrNull() ?: ktFiles.first { it.name == "main.kt" } doTestByFileStructure(singleFile, module, testServices) } diff --git a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/DebugSymbolRenderer.kt b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/DebugSymbolRenderer.kt index dea4c63aca6..eab7a4ce1c8 100644 --- a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/DebugSymbolRenderer.kt +++ b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/DebugSymbolRenderer.kt @@ -27,6 +27,9 @@ import kotlin.reflect.full.extensionReceiverParameter public object DebugSymbolRenderer { public fun render(symbol: KtSymbol): String = Block().apply { renderSymbol(symbol) }.toString() + public fun renderAnnotationApplication(application: KtAnnotationApplication): String = + Block().apply { renderAnnotationApplication(application) }.toString() + public fun renderType(type: KtType): String = Block().apply { renderType(type) }.toString() public fun KtAnalysisSession.renderExtra(symbol: KtSymbol): String = Block().apply { diff --git a/analysis/analysis-api/testData/annotations/annotationsOnTypes/annotaionOnType.kt b/analysis/analysis-api/testData/annotations/annotationsOnTypes/annotaionOnType.kt new file mode 100644 index 00000000000..5e24ff81904 --- /dev/null +++ b/analysis/analysis-api/testData/annotations/annotationsOnTypes/annotaionOnType.kt @@ -0,0 +1,6 @@ +@Target(AnnotationTarget.TYPE) +annotation class TypeAnnotation + +fun x(): @TypeAnnotation List { + TODO() +} \ No newline at end of file diff --git a/analysis/analysis-api/testData/annotations/annotationsOnTypes/annotaionOnType.txt b/analysis/analysis-api/testData/annotations/annotationsOnTypes/annotaionOnType.txt new file mode 100644 index 00000000000..1b8350a3992 --- /dev/null +++ b/analysis/analysis-api/testData/annotations/annotationsOnTypes/annotaionOnType.txt @@ -0,0 +1,5 @@ +KtTypeReference: @TypeAnnotation List +annotations: [ + TypeAnnotation() + psi: KtAnnotationEntry +] diff --git a/analysis/analysis-api/testData/annotations/annotationsOnTypes/annotaionOnTypeArgument.kt b/analysis/analysis-api/testData/annotations/annotationsOnTypes/annotaionOnTypeArgument.kt new file mode 100644 index 00000000000..0a1019b7c96 --- /dev/null +++ b/analysis/analysis-api/testData/annotations/annotationsOnTypes/annotaionOnTypeArgument.kt @@ -0,0 +1,6 @@ +@Target(AnnotationTarget.TYPE) +annotation class TypeAnnotation + +fun x(): List<@TypeAnnotation Int> { + TODO() +} \ No newline at end of file diff --git a/analysis/analysis-api/testData/annotations/annotationsOnTypes/annotaionOnTypeArgument.txt b/analysis/analysis-api/testData/annotations/annotationsOnTypes/annotaionOnTypeArgument.txt new file mode 100644 index 00000000000..cba2706ed8b --- /dev/null +++ b/analysis/analysis-api/testData/annotations/annotationsOnTypes/annotaionOnTypeArgument.txt @@ -0,0 +1,5 @@ +KtTypeReference: @TypeAnnotation Int +annotations: [ + TypeAnnotation() + psi: KtAnnotationEntry +] diff --git a/analysis/analysis-api/testData/annotations/annotationsOnTypes/annotaionOnTypeArgumentOfTypeArgument.kt b/analysis/analysis-api/testData/annotations/annotationsOnTypes/annotaionOnTypeArgumentOfTypeArgument.kt new file mode 100644 index 00000000000..eea5b46f682 --- /dev/null +++ b/analysis/analysis-api/testData/annotations/annotationsOnTypes/annotaionOnTypeArgumentOfTypeArgument.kt @@ -0,0 +1,6 @@ +@Target(AnnotationTarget.TYPE) +annotation class TypeAnnotation + +fun x(): Listnt>> { + TODO() +} \ No newline at end of file diff --git a/analysis/analysis-api/testData/annotations/annotationsOnTypes/annotaionOnTypeArgumentOfTypeArgument.txt b/analysis/analysis-api/testData/annotations/annotationsOnTypes/annotaionOnTypeArgumentOfTypeArgument.txt new file mode 100644 index 00000000000..cba2706ed8b --- /dev/null +++ b/analysis/analysis-api/testData/annotations/annotationsOnTypes/annotaionOnTypeArgumentOfTypeArgument.txt @@ -0,0 +1,5 @@ +KtTypeReference: @TypeAnnotation Int +annotations: [ + TypeAnnotation() + psi: KtAnnotationEntry +] diff --git a/analysis/analysis-api/testData/annotations/annotationsOnTypes/annotaionWithComplexArgumentOnType.kt b/analysis/analysis-api/testData/annotations/annotationsOnTypes/annotaionWithComplexArgumentOnType.kt new file mode 100644 index 00000000000..ebe3324a1a3 --- /dev/null +++ b/analysis/analysis-api/testData/annotations/annotationsOnTypes/annotaionWithComplexArgumentOnType.kt @@ -0,0 +1,6 @@ +@Target(AnnotationTarget.TYPE) +annotation class TypeAnnotation(val value: Int) + +fun x(): @TypeAnnotation(1 + 1) List { + TODO() +} \ No newline at end of file diff --git a/analysis/analysis-api/testData/annotations/annotationsOnTypes/annotaionWithComplexArgumentOnType.txt b/analysis/analysis-api/testData/annotations/annotationsOnTypes/annotaionWithComplexArgumentOnType.txt new file mode 100644 index 00000000000..2636a1e2a3d --- /dev/null +++ b/analysis/analysis-api/testData/annotations/annotationsOnTypes/annotaionWithComplexArgumentOnType.txt @@ -0,0 +1,5 @@ +KtTypeReference: @TypeAnnotation(1 + 1) List +annotations: [ + TypeAnnotation(value = 2) + psi: KtAnnotationEntry +] diff --git a/analysis/analysis-api/testData/annotations/annotationsOnTypes/annotaionWithComplexArgumentOnTypeArgument.kt b/analysis/analysis-api/testData/annotations/annotationsOnTypes/annotaionWithComplexArgumentOnTypeArgument.kt new file mode 100644 index 00000000000..7531500fff3 --- /dev/null +++ b/analysis/analysis-api/testData/annotations/annotationsOnTypes/annotaionWithComplexArgumentOnTypeArgument.kt @@ -0,0 +1,6 @@ +@Target(AnnotationTarget.TYPE) +annotation class TypeAnnotation(val value: Int) + +fun x(): MutableList<@TypeAnnotation(1 + 1) List> { + TODO() +} \ No newline at end of file diff --git a/analysis/analysis-api/testData/annotations/annotationsOnTypes/annotaionWithComplexArgumentOnTypeArgument.txt b/analysis/analysis-api/testData/annotations/annotationsOnTypes/annotaionWithComplexArgumentOnTypeArgument.txt new file mode 100644 index 00000000000..2636a1e2a3d --- /dev/null +++ b/analysis/analysis-api/testData/annotations/annotationsOnTypes/annotaionWithComplexArgumentOnTypeArgument.txt @@ -0,0 +1,5 @@ +KtTypeReference: @TypeAnnotation(1 + 1) List +annotations: [ + TypeAnnotation(value = 2) + psi: KtAnnotationEntry +] diff --git a/analysis/analysis-api/testData/annotations/annotationsOnTypes/annotaionWithLiteralArgumentOnType.kt b/analysis/analysis-api/testData/annotations/annotationsOnTypes/annotaionWithLiteralArgumentOnType.kt new file mode 100644 index 00000000000..021196bc39a --- /dev/null +++ b/analysis/analysis-api/testData/annotations/annotationsOnTypes/annotaionWithLiteralArgumentOnType.kt @@ -0,0 +1,6 @@ +@Target(AnnotationTarget.TYPE) +annotation class TypeAnnotation(val value: Int) + +fun x(): @TypeAnnotation(1) List { + TODO() +} \ No newline at end of file diff --git a/analysis/analysis-api/testData/annotations/annotationsOnTypes/annotaionWithLiteralArgumentOnType.txt b/analysis/analysis-api/testData/annotations/annotationsOnTypes/annotaionWithLiteralArgumentOnType.txt new file mode 100644 index 00000000000..27063aa24ef --- /dev/null +++ b/analysis/analysis-api/testData/annotations/annotationsOnTypes/annotaionWithLiteralArgumentOnType.txt @@ -0,0 +1,5 @@ +KtTypeReference: @TypeAnnotation(1) List +annotations: [ + TypeAnnotation(value = 1) + psi: KtAnnotationEntry +] diff --git a/analysis/analysis-api/testData/annotations/annotationsOnTypes/annotaionWithLiteralArgumentOnTypeArgument.kt b/analysis/analysis-api/testData/annotations/annotationsOnTypes/annotaionWithLiteralArgumentOnTypeArgument.kt new file mode 100644 index 00000000000..b489ae062a6 --- /dev/null +++ b/analysis/analysis-api/testData/annotations/annotationsOnTypes/annotaionWithLiteralArgumentOnTypeArgument.kt @@ -0,0 +1,6 @@ +@Target(AnnotationTarget.TYPE) +annotation class TypeAnnotation(val value: Int) + +fun x(): List<@TypeAnnotation(1) Int> { + TODO() +} \ No newline at end of file diff --git a/analysis/analysis-api/testData/annotations/annotationsOnTypes/annotaionWithLiteralArgumentOnTypeArgument.txt b/analysis/analysis-api/testData/annotations/annotationsOnTypes/annotaionWithLiteralArgumentOnTypeArgument.txt new file mode 100644 index 00000000000..cdd81305642 --- /dev/null +++ b/analysis/analysis-api/testData/annotations/annotationsOnTypes/annotaionWithLiteralArgumentOnTypeArgument.txt @@ -0,0 +1,5 @@ +KtTypeReference: @TypeAnnotation(1) Int +annotations: [ + TypeAnnotation(value = 1) + psi: KtAnnotationEntry +] 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 cec5703b9e3..6438a63599e 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 @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.generators.tests.analysis.api +import org.jetbrains.kotlin.analysis.api.descriptors.test.annotations.AbstractAnalysisApiFe10AnnotationsOnTypesTest import org.jetbrains.kotlin.analysis.api.descriptors.test.components.callResolver.AbstractKtFe10ResolveCallTest import org.jetbrains.kotlin.analysis.api.descriptors.test.components.compileTimeConstantProvider.AbstractKtFe10CompileTimeConstantEvaluatorTest import org.jetbrains.kotlin.analysis.api.descriptors.test.components.expressionInfoProvider.AbstractKtFe10ReturnTargetSymbolTest @@ -20,6 +21,7 @@ import org.jetbrains.kotlin.analysis.api.descriptors.test.symbols.AbstractKtFe10 import org.jetbrains.kotlin.analysis.api.descriptors.test.symbols.AbstractKtFe10SymbolByPsiTest import org.jetbrains.kotlin.analysis.api.descriptors.test.symbols.AbstractKtFe10SymbolByReferenceTest import org.jetbrains.kotlin.analysis.api.fir.AbstractFirReferenceResolveTest +import org.jetbrains.kotlin.analysis.api.fir.annotations.AbstractAnalysisApiFirAnnotationsOnTypesTest import org.jetbrains.kotlin.analysis.api.fir.components.callResolver.AbstractFirResolveCallTest import org.jetbrains.kotlin.analysis.api.fir.components.compileTimeConstantProvider.AbstractFirCompileTimeConstantEvaluatorTest import org.jetbrains.kotlin.analysis.api.fir.components.expressionInfoProvider.AbstractFirReturnTargetSymbolTest @@ -102,6 +104,15 @@ private fun TestGroupSuite.generateAnalysisApiNonComponentsTests() { model("symbolByReference") } } + + group("annotations") { + test( + fir = AbstractAnalysisApiFirAnnotationsOnTypesTest::class, + fe10 = AbstractAnalysisApiFe10AnnotationsOnTypesTest::class + ) { + model("annotationsOnTypes") + } + } }