diff --git a/analysis/analysis-api-fe10/tests/org/jetbrains/kotlin/analysis/api/descriptors/test/annotations/AbstractAnalysisApiFe10AnnotationsOnDeclarationsTest.kt b/analysis/analysis-api-fe10/tests/org/jetbrains/kotlin/analysis/api/descriptors/test/annotations/AbstractAnalysisApiFe10AnnotationsOnDeclarationsTest.kt new file mode 100644 index 00000000000..1c4731d1db5 --- /dev/null +++ b/analysis/analysis-api-fe10/tests/org/jetbrains/kotlin/analysis/api/descriptors/test/annotations/AbstractAnalysisApiFe10AnnotationsOnDeclarationsTest.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.AbstractAnalysisApiAnnotationsOnDeclarationsTest + +abstract class AbstractAnalysisApiFe10AnnotationsOnDeclarationsTest : + AbstractAnalysisApiAnnotationsOnDeclarationsTest(KtFe10FrontendApiTestConfiguratorService) \ No newline at end of file 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/AbstractAnalysisApiFe10AnnotationsOnTypesTest.kt similarity index 100% rename from analysis/analysis-api-fe10/tests/org/jetbrains/kotlin/analysis/api/descriptors/test/annotations/AbstractAnalysisApiFirAnnotationsOnTypesTest.kt rename to analysis/analysis-api-fe10/tests/org/jetbrains/kotlin/analysis/api/descriptors/test/annotations/AbstractAnalysisApiFe10AnnotationsOnTypesTest.kt diff --git a/analysis/analysis-api-fe10/tests/org/jetbrains/kotlin/analysis/api/descriptors/test/annotations/AnalysisApiFe10AnnotationsOnDeclarationsTestGenerated.java b/analysis/analysis-api-fe10/tests/org/jetbrains/kotlin/analysis/api/descriptors/test/annotations/AnalysisApiFe10AnnotationsOnDeclarationsTestGenerated.java new file mode 100644 index 00000000000..a7d54d053df --- /dev/null +++ b/analysis/analysis-api-fe10/tests/org/jetbrains/kotlin/analysis/api/descriptors/test/annotations/AnalysisApiFe10AnnotationsOnDeclarationsTestGenerated.java @@ -0,0 +1,100 @@ +/* + * 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/annotationsOnDeclaration") +@TestDataPath("$PROJECT_ROOT") +public class AnalysisApiFe10AnnotationsOnDeclarationsTestGenerated extends AbstractAnalysisApiFe10AnnotationsOnDeclarationsTest { + @Test + public void testAllFilesPresentInAnnotationsOnDeclaration() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/annotations/annotationsOnDeclaration"), Pattern.compile("^(.+)\\.kt$"), null, true); + } + + @Test + @TestMetadata("deprecated.kt") + public void testDeprecated() throws Exception { + runTest("analysis/analysis-api/testData/annotations/annotationsOnDeclaration/deprecated.kt"); + } + + @Nested + @TestMetadata("analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct") + @TestDataPath("$PROJECT_ROOT") + public class Direct { + @Test + public void testAllFilesPresentInDirect() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct"), Pattern.compile("^(.+)\\.kt$"), null, true); + } + + @Test + @TestMetadata("onClass.kt") + public void testOnClass() throws Exception { + runTest("analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/onClass.kt"); + } + + @Test + @TestMetadata("onFunction.kt") + public void testOnFunction() throws Exception { + runTest("analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/onFunction.kt"); + } + + @Test + @TestMetadata("onProperty.kt") + public void testOnProperty() throws Exception { + runTest("analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/onProperty.kt"); + } + + @Test + @TestMetadata("onTypeAlias.kt") + public void testOnTypeAlias() throws Exception { + runTest("analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/onTypeAlias.kt"); + } + } + + @Nested + @TestMetadata("analysis/analysis-api/testData/annotations/annotationsOnDeclaration/useSite") + @TestDataPath("$PROJECT_ROOT") + public class UseSite { + @Test + public void testAllFilesPresentInUseSite() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/annotations/annotationsOnDeclaration/useSite"), Pattern.compile("^(.+)\\.kt$"), null, true); + } + + @Test + @TestMetadata("onGetter.kt") + public void testOnGetter() throws Exception { + runTest("analysis/analysis-api/testData/annotations/annotationsOnDeclaration/useSite/onGetter.kt"); + } + + @Test + @TestMetadata("onParam.kt") + public void testOnParam() throws Exception { + runTest("analysis/analysis-api/testData/annotations/annotationsOnDeclaration/useSite/onParam.kt"); + } + + @Test + @TestMetadata("onProperty.kt") + public void testOnProperty() throws Exception { + runTest("analysis/analysis-api/testData/annotations/annotationsOnDeclaration/useSite/onProperty.kt"); + } + + @Test + @TestMetadata("onSetter.kt") + public void testOnSetter() throws Exception { + runTest("analysis/analysis-api/testData/annotations/annotationsOnDeclaration/useSite/onSetter.kt"); + } + } +} diff --git a/analysis/analysis-api-fir/tests/org/jetbrains/kotlin/analysis/api/fir/annotations/AbstractAnalysisApiFirAnnotationsOnDeclarationsTest.kt b/analysis/analysis-api-fir/tests/org/jetbrains/kotlin/analysis/api/fir/annotations/AbstractAnalysisApiFirAnnotationsOnDeclarationsTest.kt new file mode 100644 index 00000000000..579a008f143 --- /dev/null +++ b/analysis/analysis-api-fir/tests/org/jetbrains/kotlin/analysis/api/fir/annotations/AbstractAnalysisApiFirAnnotationsOnDeclarationsTest.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.AbstractAnalysisApiAnnotationsOnDeclarationsTest + +abstract class AbstractAnalysisApiFirAnnotationsOnDeclarationsTest : + AbstractAnalysisApiAnnotationsOnDeclarationsTest(FirFrontendApiTestConfiguratorService) \ No newline at end of file diff --git a/analysis/analysis-api-fir/tests/org/jetbrains/kotlin/analysis/api/fir/annotations/AnalysisApiFirAnnotationsOnDeclarationsTestGenerated.java b/analysis/analysis-api-fir/tests/org/jetbrains/kotlin/analysis/api/fir/annotations/AnalysisApiFirAnnotationsOnDeclarationsTestGenerated.java new file mode 100644 index 00000000000..28ecef7356e --- /dev/null +++ b/analysis/analysis-api-fir/tests/org/jetbrains/kotlin/analysis/api/fir/annotations/AnalysisApiFirAnnotationsOnDeclarationsTestGenerated.java @@ -0,0 +1,100 @@ +/* + * 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/annotationsOnDeclaration") +@TestDataPath("$PROJECT_ROOT") +public class AnalysisApiFirAnnotationsOnDeclarationsTestGenerated extends AbstractAnalysisApiFirAnnotationsOnDeclarationsTest { + @Test + public void testAllFilesPresentInAnnotationsOnDeclaration() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/annotations/annotationsOnDeclaration"), Pattern.compile("^(.+)\\.kt$"), null, true); + } + + @Test + @TestMetadata("deprecated.kt") + public void testDeprecated() throws Exception { + runTest("analysis/analysis-api/testData/annotations/annotationsOnDeclaration/deprecated.kt"); + } + + @Nested + @TestMetadata("analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct") + @TestDataPath("$PROJECT_ROOT") + public class Direct { + @Test + public void testAllFilesPresentInDirect() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct"), Pattern.compile("^(.+)\\.kt$"), null, true); + } + + @Test + @TestMetadata("onClass.kt") + public void testOnClass() throws Exception { + runTest("analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/onClass.kt"); + } + + @Test + @TestMetadata("onFunction.kt") + public void testOnFunction() throws Exception { + runTest("analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/onFunction.kt"); + } + + @Test + @TestMetadata("onProperty.kt") + public void testOnProperty() throws Exception { + runTest("analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/onProperty.kt"); + } + + @Test + @TestMetadata("onTypeAlias.kt") + public void testOnTypeAlias() throws Exception { + runTest("analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/onTypeAlias.kt"); + } + } + + @Nested + @TestMetadata("analysis/analysis-api/testData/annotations/annotationsOnDeclaration/useSite") + @TestDataPath("$PROJECT_ROOT") + public class UseSite { + @Test + public void testAllFilesPresentInUseSite() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/annotations/annotationsOnDeclaration/useSite"), Pattern.compile("^(.+)\\.kt$"), null, true); + } + + @Test + @TestMetadata("onGetter.kt") + public void testOnGetter() throws Exception { + runTest("analysis/analysis-api/testData/annotations/annotationsOnDeclaration/useSite/onGetter.kt"); + } + + @Test + @TestMetadata("onParam.kt") + public void testOnParam() throws Exception { + runTest("analysis/analysis-api/testData/annotations/annotationsOnDeclaration/useSite/onParam.kt"); + } + + @Test + @TestMetadata("onProperty.kt") + public void testOnProperty() throws Exception { + runTest("analysis/analysis-api/testData/annotations/annotationsOnDeclaration/useSite/onProperty.kt"); + } + + @Test + @TestMetadata("onSetter.kt") + public void testOnSetter() throws Exception { + runTest("analysis/analysis-api/testData/annotations/annotationsOnDeclaration/useSite/onSetter.kt"); + } + } +} diff --git a/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/annotations/AbstractAnalysisApiAnnotationsOnDeclarationsTest.kt b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/annotations/AbstractAnalysisApiAnnotationsOnDeclarationsTest.kt new file mode 100644 index 00000000000..6724934ad9d --- /dev/null +++ b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/annotations/AbstractAnalysisApiAnnotationsOnDeclarationsTest.kt @@ -0,0 +1,44 @@ +/* + * 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.analysis.api.symbols.markers.KtAnnotatedSymbol +import org.jetbrains.kotlin.psi.KtDeclaration +import org.jetbrains.kotlin.psi.KtFile +import org.jetbrains.kotlin.test.model.TestModule +import org.jetbrains.kotlin.test.services.TestServices +import org.jetbrains.kotlin.test.services.assertions + +abstract class AbstractAnalysisApiAnnotationsOnDeclarationsTest( + configurator: FrontendApiTestConfiguratorService +) : AbstractHLApiSingleFileTest(configurator) { + + override fun doTestByFileStructure(ktFile: KtFile, module: TestModule, testServices: TestServices) { + val ktDeclaration = testServices.expressionMarkerProvider + .getElementOfTypAtCaret(ktFile) + val actual = analyseForTest(ktFile) { + val declarationSymbol = ktDeclaration.getSymbol() as KtAnnotatedSymbol + val annotations = declarationSymbol.annotations + buildString { + appendLine("KtDeclaration: ${ktDeclaration::class.simpleName} ${ktDeclaration.name}") + appendLine("annotations: [") + for (annotation in annotations) { + appendLine(DebugSymbolRenderer.renderAnnotationApplication(annotation).indented(indent = 2)) + } + appendLine("]") + } + } + + testServices.assertions.assertEqualsToTestDataFileSibling(actual) + } +} + diff --git a/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/deprecated.kt b/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/deprecated.kt new file mode 100644 index 00000000000..5e5461d0ea1 --- /dev/null +++ b/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/deprecated.kt @@ -0,0 +1,3 @@ +@Deprecated("deprecated", level = DeprecationLevel.ERROR) +fun foo() { +} \ No newline at end of file diff --git a/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/deprecated.txt b/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/deprecated.txt new file mode 100644 index 00000000000..ff55fa20e6d --- /dev/null +++ b/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/deprecated.txt @@ -0,0 +1,5 @@ +KtDeclaration: KtNamedFunction foo +annotations: [ + kotlin/Deprecated(level = KtEnumEntryConstantValue(kotlin/DeprecationLevel.ERROR), message = deprecated) + psi: KtAnnotationEntry +] diff --git a/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/onClass.kt b/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/onClass.kt new file mode 100644 index 00000000000..bc6c69781c3 --- /dev/null +++ b/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/onClass.kt @@ -0,0 +1,4 @@ +annotation class A(val a: Int, val c: KClass<*>) + +@A(1, Int::class) +class Foo \ No newline at end of file diff --git a/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/onClass.txt b/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/onClass.txt new file mode 100644 index 00000000000..693d4cdbbaf --- /dev/null +++ b/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/onClass.txt @@ -0,0 +1,5 @@ +KtDeclaration: KtClass Foo +annotations: [ + A(a = 1, c = KtUnsupportedConstantValue) + psi: KtAnnotationEntry +] diff --git a/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/onFunction.kt b/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/onFunction.kt new file mode 100644 index 00000000000..bcbd04e2d7e --- /dev/null +++ b/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/onFunction.kt @@ -0,0 +1,4 @@ +annotation class A(val a: Int, val c: KClass<*>) + +@A(1, Int::class) +fun foo(): Int = 10 \ No newline at end of file diff --git a/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/onFunction.txt b/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/onFunction.txt new file mode 100644 index 00000000000..0eaf3f0b7a2 --- /dev/null +++ b/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/onFunction.txt @@ -0,0 +1,5 @@ +KtDeclaration: KtNamedFunction foo +annotations: [ + A(a = 1, c = KtUnsupportedConstantValue) + psi: KtAnnotationEntry +] diff --git a/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/onProperty.kt b/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/onProperty.kt new file mode 100644 index 00000000000..3ae8550a0bf --- /dev/null +++ b/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/onProperty.kt @@ -0,0 +1,4 @@ +annotation class A(val a: Int, val c: KClass<*>) + +@A(1, Int::class) +val foo: Int = 10 \ No newline at end of file diff --git a/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/onProperty.txt b/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/onProperty.txt new file mode 100644 index 00000000000..ce1fe561f86 --- /dev/null +++ b/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/onProperty.txt @@ -0,0 +1,5 @@ +KtDeclaration: KtProperty foo +annotations: [ + A(a = 1, c = KtUnsupportedConstantValue) + psi: KtAnnotationEntry +] diff --git a/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/onTypeAlias.kt b/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/onTypeAlias.kt new file mode 100644 index 00000000000..1d595805465 --- /dev/null +++ b/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/onTypeAlias.kt @@ -0,0 +1,4 @@ +annotation class A(val a: Int, val c: KClass<*>) + +@A(1, Int::class) +typealias Foo = String \ No newline at end of file diff --git a/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/onTypeAlias.txt b/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/onTypeAlias.txt new file mode 100644 index 00000000000..5503759d3be --- /dev/null +++ b/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/onTypeAlias.txt @@ -0,0 +1,5 @@ +KtDeclaration: KtTypeAlias Foo +annotations: [ + A(a = 1, c = KtUnsupportedConstantValue) + psi: KtAnnotationEntry +] diff --git a/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/useSite/onGetter.kt b/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/useSite/onGetter.kt new file mode 100644 index 00000000000..c15f2dbf0f4 --- /dev/null +++ b/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/useSite/onGetter.kt @@ -0,0 +1,5 @@ +annotation class A(val a: Int, val c: KClass<*>) + +@get:A(1, Int::class) +val foo : Int + get() = 10 \ No newline at end of file diff --git a/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/useSite/onGetter.txt b/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/useSite/onGetter.txt new file mode 100644 index 00000000000..ddad4930118 --- /dev/null +++ b/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/useSite/onGetter.txt @@ -0,0 +1,5 @@ +KtDeclaration: KtPropertyAccessor null +annotations: [ + A(a = 1, c = KtUnsupportedConstantValue) + psi: KtAnnotationEntry +] diff --git a/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/useSite/onParam.kt b/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/useSite/onParam.kt new file mode 100644 index 00000000000..8914ab670dc --- /dev/null +++ b/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/useSite/onParam.kt @@ -0,0 +1,3 @@ +annotation class A(val a: Int, val c: KClass<*>) + +data class Foo(@param:A(1, Int::class) val bar: String) \ No newline at end of file diff --git a/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/useSite/onParam.txt b/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/useSite/onParam.txt new file mode 100644 index 00000000000..46e850455af --- /dev/null +++ b/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/useSite/onParam.txt @@ -0,0 +1,5 @@ +KtDeclaration: KtParameter bar +annotations: [ + A(a = 1, c = KtUnsupportedConstantValue) + psi: KtAnnotationEntry +] diff --git a/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/useSite/onProperty.kt b/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/useSite/onProperty.kt new file mode 100644 index 00000000000..3fba6d2cb94 --- /dev/null +++ b/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/useSite/onProperty.kt @@ -0,0 +1,5 @@ +annotation class A(val a: Int, val c: KClass<*>) + +@property:A(1, Int::class) +val foo : Int + get() = 10 \ No newline at end of file diff --git a/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/useSite/onProperty.txt b/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/useSite/onProperty.txt new file mode 100644 index 00000000000..ce1fe561f86 --- /dev/null +++ b/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/useSite/onProperty.txt @@ -0,0 +1,5 @@ +KtDeclaration: KtProperty foo +annotations: [ + A(a = 1, c = KtUnsupportedConstantValue) + psi: KtAnnotationEntry +] diff --git a/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/useSite/onSetter.kt b/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/useSite/onSetter.kt new file mode 100644 index 00000000000..35a6ad18e36 --- /dev/null +++ b/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/useSite/onSetter.kt @@ -0,0 +1,7 @@ +annotation class A(val a: Int, val c: KClass<*>) + +@set:A(1, Int::class) +var foo : Int + set(value) { + field = value + } \ No newline at end of file diff --git a/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/useSite/onSetter.txt b/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/useSite/onSetter.txt new file mode 100644 index 00000000000..ddad4930118 --- /dev/null +++ b/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/useSite/onSetter.txt @@ -0,0 +1,5 @@ +KtDeclaration: KtPropertyAccessor null +annotations: [ + A(a = 1, c = KtUnsupportedConstantValue) + 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 6438a63599e..af4d92d4830 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.AbstractAnalysisApiFe10AnnotationsOnDeclarationsTest 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 @@ -21,6 +22,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.AbstractAnalysisApiFirAnnotationsOnDeclarationsTest 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 @@ -112,6 +114,13 @@ private fun TestGroupSuite.generateAnalysisApiNonComponentsTests() { ) { model("annotationsOnTypes") } + + test( + fir = AbstractAnalysisApiFirAnnotationsOnDeclarationsTest::class, + fe10 = AbstractAnalysisApiFe10AnnotationsOnDeclarationsTest::class + ) { + model("annotationsOnDeclaration") + } } }