diff --git a/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/annotations/Fe10IdeNormalAnalysisSourceModuleAnalysisApiAnnotationsOnDeclarationsTestGenerated.java b/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/annotations/Fe10IdeNormalAnalysisSourceModuleAnalysisApiAnnotationsOnDeclarationsTestGenerated.java index c21813023b6..9cf695d21b2 100644 --- a/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/annotations/Fe10IdeNormalAnalysisSourceModuleAnalysisApiAnnotationsOnDeclarationsTestGenerated.java +++ b/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/annotations/Fe10IdeNormalAnalysisSourceModuleAnalysisApiAnnotationsOnDeclarationsTestGenerated.java @@ -67,6 +67,12 @@ public class Fe10IdeNormalAnalysisSourceModuleAnalysisApiAnnotationsOnDeclaratio KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct"), Pattern.compile("^(.+)\\.kt$"), null, true); } + @Test + @TestMetadata("emptyJavaSpreadParameter.kt") + public void testEmptyJavaSpreadParameter() throws Exception { + runTest("analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/emptyJavaSpreadParameter.kt"); + } + @Test @TestMetadata("onClass.kt") public void testOnClass() throws Exception { @@ -103,11 +109,29 @@ public class Fe10IdeNormalAnalysisSourceModuleAnalysisApiAnnotationsOnDeclaratio runTest("analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/onTypeAlias.kt"); } + @Test + @TestMetadata("varargComplexParameter.kt") + public void testVarargComplexParameter() throws Exception { + runTest("analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/varargComplexParameter.kt"); + } + + @Test + @TestMetadata("varargNamedParameter.kt") + public void testVarargNamedParameter() throws Exception { + runTest("analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/varargNamedParameter.kt"); + } + @Test @TestMetadata("varargParameter.kt") public void testVarargParameter() throws Exception { runTest("analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/varargParameter.kt"); } + + @Test + @TestMetadata("varargSpreadParameter.kt") + public void testVarargSpreadParameter() throws Exception { + runTest("analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/varargSpreadParameter.kt"); + } } @Nested diff --git a/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/annotations/Fe10IdeNormalAnalysisSourceModuleAnalysisApiAnnotationsOnDeclarationsWithMetaTestGenerated.java b/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/annotations/Fe10IdeNormalAnalysisSourceModuleAnalysisApiAnnotationsOnDeclarationsWithMetaTestGenerated.java index fe8c3f8637d..cf6ed683b49 100644 --- a/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/annotations/Fe10IdeNormalAnalysisSourceModuleAnalysisApiAnnotationsOnDeclarationsWithMetaTestGenerated.java +++ b/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/annotations/Fe10IdeNormalAnalysisSourceModuleAnalysisApiAnnotationsOnDeclarationsWithMetaTestGenerated.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2022 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. */ diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/evaluate/FirAnnotationValueConverter.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/evaluate/FirAnnotationValueConverter.kt index 439f0e248d2..15c997cc187 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/evaluate/FirAnnotationValueConverter.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/evaluate/FirAnnotationValueConverter.kt @@ -15,6 +15,7 @@ import org.jetbrains.kotlin.fir.declarations.FirClass import org.jetbrains.kotlin.fir.declarations.utils.isLocal import org.jetbrains.kotlin.fir.expressions.* import org.jetbrains.kotlin.fir.psi +import org.jetbrains.kotlin.fir.realPsi import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference import org.jetbrains.kotlin.fir.symbols.impl.FirConstructorSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirEnumEntrySymbol @@ -41,37 +42,26 @@ internal object FirAnnotationValueConverter { return KtConstantAnnotationValue(constantValue) } - private fun Collection.convertConstantExpression( + private fun Collection.convertVarargsExpression( session: FirSession, - ): Collection = - mapNotNull { it.convertConstantExpression(session) } + ): Pair, KtElement?> { + var representativePsi: KtElement? = null + val flattenedVarargs = buildList { + for (expr in this@convertVarargsExpression) { + val converted = expr.convertConstantExpression(session) ?: continue - // Refer to KtLightAnnotationParameterList#checkIfToArrayConversionExpected - private fun ValueArgument?.arrayConversionExpected(): Boolean { - return when { - this == null -> false - this is KtValueArgument && isSpread -> { - // Anno(*[1,2,3]) - false - } - - else -> { - // Anno(a = [1,2,3]) v.s. Anno(1) or Anno(1,2,3) - !isNamed() + if (expr is FirSpreadArgumentExpression || expr is FirNamedArgumentExpression) { + addAll((converted as KtArrayAnnotationValue).values) + } else { + add(converted) + } + representativePsi = representativePsi ?: converted.sourcePsi } } + + return flattenedVarargs to representativePsi } - private fun Collection.toArrayConstantValueIfNecessary(sourcePsi: KtElement?): KtAnnotationValue? { - val valueArgument = if (sourcePsi is ValueArgument) sourcePsi else - (sourcePsi?.parents?.firstOrNull { it is ValueArgument } as? ValueArgument) - val wrap = valueArgument?.arrayConversionExpected() ?: false - return if (wrap) { - KtArrayAnnotationValue(this, sourcePsi) - } else { - singleOrNull() - } - } fun toConstantValue( firExpression: FirExpression, @@ -94,12 +84,15 @@ internal object FirAnnotationValueConverter { } is FirVarargArgumentsExpression -> { - arguments.convertConstantExpression(session).toArrayConstantValueIfNecessary(sourcePsi) + // Vararg arguments may have multiple independent expressions associated. + // Choose one to be the representative PSI value for the entire assembled argument. + val (annotationValues, representativePsi) = arguments.convertVarargsExpression(session) + KtArrayAnnotationValue(annotationValues, representativePsi ?: sourcePsi) } is FirArrayOfCall -> { // Desugared collection literals. - KtArrayAnnotationValue(argumentList.arguments.convertConstantExpression(session), sourcePsi) + KtArrayAnnotationValue(argumentList.arguments.convertVarargsExpression(session).first, sourcePsi) } is FirFunctionCall -> { diff --git a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/annotations/FirIdeDependentAnalysisSourceModuleAnalysisApiAnnotationsOnDeclarationsTestGenerated.java b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/annotations/FirIdeDependentAnalysisSourceModuleAnalysisApiAnnotationsOnDeclarationsTestGenerated.java index b2fab75c9a6..a15f0309732 100644 --- a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/annotations/FirIdeDependentAnalysisSourceModuleAnalysisApiAnnotationsOnDeclarationsTestGenerated.java +++ b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/annotations/FirIdeDependentAnalysisSourceModuleAnalysisApiAnnotationsOnDeclarationsTestGenerated.java @@ -67,6 +67,12 @@ public class FirIdeDependentAnalysisSourceModuleAnalysisApiAnnotationsOnDeclarat KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct"), Pattern.compile("^(.+)\\.kt$"), null, true); } + @Test + @TestMetadata("emptyJavaSpreadParameter.kt") + public void testEmptyJavaSpreadParameter() throws Exception { + runTest("analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/emptyJavaSpreadParameter.kt"); + } + @Test @TestMetadata("onClass.kt") public void testOnClass() throws Exception { @@ -103,11 +109,29 @@ public class FirIdeDependentAnalysisSourceModuleAnalysisApiAnnotationsOnDeclarat runTest("analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/onTypeAlias.kt"); } + @Test + @TestMetadata("varargComplexParameter.kt") + public void testVarargComplexParameter() throws Exception { + runTest("analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/varargComplexParameter.kt"); + } + + @Test + @TestMetadata("varargNamedParameter.kt") + public void testVarargNamedParameter() throws Exception { + runTest("analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/varargNamedParameter.kt"); + } + @Test @TestMetadata("varargParameter.kt") public void testVarargParameter() throws Exception { runTest("analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/varargParameter.kt"); } + + @Test + @TestMetadata("varargSpreadParameter.kt") + public void testVarargSpreadParameter() throws Exception { + runTest("analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/varargSpreadParameter.kt"); + } } @Nested diff --git a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/annotations/FirIdeDependentAnalysisSourceModuleAnalysisApiAnnotationsOnDeclarationsWithMetaTestGenerated.java b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/annotations/FirIdeDependentAnalysisSourceModuleAnalysisApiAnnotationsOnDeclarationsWithMetaTestGenerated.java index 5819fc18d15..0ecaf87f0cf 100644 --- a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/annotations/FirIdeDependentAnalysisSourceModuleAnalysisApiAnnotationsOnDeclarationsWithMetaTestGenerated.java +++ b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/annotations/FirIdeDependentAnalysisSourceModuleAnalysisApiAnnotationsOnDeclarationsWithMetaTestGenerated.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2022 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. */ diff --git a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/annotations/FirIdeNormalAnalysisSourceModuleAnalysisApiAnnotationsOnDeclarationsTestGenerated.java b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/annotations/FirIdeNormalAnalysisSourceModuleAnalysisApiAnnotationsOnDeclarationsTestGenerated.java index 24588f73639..1d8358e903f 100644 --- a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/annotations/FirIdeNormalAnalysisSourceModuleAnalysisApiAnnotationsOnDeclarationsTestGenerated.java +++ b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/annotations/FirIdeNormalAnalysisSourceModuleAnalysisApiAnnotationsOnDeclarationsTestGenerated.java @@ -67,6 +67,12 @@ public class FirIdeNormalAnalysisSourceModuleAnalysisApiAnnotationsOnDeclaration KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct"), Pattern.compile("^(.+)\\.kt$"), null, true); } + @Test + @TestMetadata("emptyJavaSpreadParameter.kt") + public void testEmptyJavaSpreadParameter() throws Exception { + runTest("analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/emptyJavaSpreadParameter.kt"); + } + @Test @TestMetadata("onClass.kt") public void testOnClass() throws Exception { @@ -103,11 +109,29 @@ public class FirIdeNormalAnalysisSourceModuleAnalysisApiAnnotationsOnDeclaration runTest("analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/onTypeAlias.kt"); } + @Test + @TestMetadata("varargComplexParameter.kt") + public void testVarargComplexParameter() throws Exception { + runTest("analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/varargComplexParameter.kt"); + } + + @Test + @TestMetadata("varargNamedParameter.kt") + public void testVarargNamedParameter() throws Exception { + runTest("analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/varargNamedParameter.kt"); + } + @Test @TestMetadata("varargParameter.kt") public void testVarargParameter() throws Exception { runTest("analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/varargParameter.kt"); } + + @Test + @TestMetadata("varargSpreadParameter.kt") + public void testVarargSpreadParameter() throws Exception { + runTest("analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/varargSpreadParameter.kt"); + } } @Nested diff --git a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/annotations/FirIdeNormalAnalysisSourceModuleAnalysisApiAnnotationsOnDeclarationsWithMetaTestGenerated.java b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/annotations/FirIdeNormalAnalysisSourceModuleAnalysisApiAnnotationsOnDeclarationsWithMetaTestGenerated.java index ad7f8ff7771..3247dae2679 100644 --- a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/annotations/FirIdeNormalAnalysisSourceModuleAnalysisApiAnnotationsOnDeclarationsWithMetaTestGenerated.java +++ b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/annotations/FirIdeNormalAnalysisSourceModuleAnalysisApiAnnotationsOnDeclarationsWithMetaTestGenerated.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2022 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. */ diff --git a/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/annotations/FirStandaloneNormalAnalysisSourceModuleAnalysisApiAnnotationsOnDeclarationsTestGenerated.java b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/annotations/FirStandaloneNormalAnalysisSourceModuleAnalysisApiAnnotationsOnDeclarationsTestGenerated.java index 3a244c06977..2c62d494ec5 100644 --- a/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/annotations/FirStandaloneNormalAnalysisSourceModuleAnalysisApiAnnotationsOnDeclarationsTestGenerated.java +++ b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/annotations/FirStandaloneNormalAnalysisSourceModuleAnalysisApiAnnotationsOnDeclarationsTestGenerated.java @@ -67,6 +67,12 @@ public class FirStandaloneNormalAnalysisSourceModuleAnalysisApiAnnotationsOnDecl KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct"), Pattern.compile("^(.+)\\.kt$"), null, true); } + @Test + @TestMetadata("emptyJavaSpreadParameter.kt") + public void testEmptyJavaSpreadParameter() throws Exception { + runTest("analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/emptyJavaSpreadParameter.kt"); + } + @Test @TestMetadata("onClass.kt") public void testOnClass() throws Exception { @@ -103,11 +109,29 @@ public class FirStandaloneNormalAnalysisSourceModuleAnalysisApiAnnotationsOnDecl runTest("analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/onTypeAlias.kt"); } + @Test + @TestMetadata("varargComplexParameter.kt") + public void testVarargComplexParameter() throws Exception { + runTest("analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/varargComplexParameter.kt"); + } + + @Test + @TestMetadata("varargNamedParameter.kt") + public void testVarargNamedParameter() throws Exception { + runTest("analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/varargNamedParameter.kt"); + } + @Test @TestMetadata("varargParameter.kt") public void testVarargParameter() throws Exception { runTest("analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/varargParameter.kt"); } + + @Test + @TestMetadata("varargSpreadParameter.kt") + public void testVarargSpreadParameter() throws Exception { + runTest("analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/varargSpreadParameter.kt"); + } } @Nested diff --git a/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/annotations/FirStandaloneNormalAnalysisSourceModuleAnalysisApiAnnotationsOnDeclarationsWithMetaTestGenerated.java b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/annotations/FirStandaloneNormalAnalysisSourceModuleAnalysisApiAnnotationsOnDeclarationsWithMetaTestGenerated.java index 3749400bf21..f22ca9e44a9 100644 --- a/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/annotations/FirStandaloneNormalAnalysisSourceModuleAnalysisApiAnnotationsOnDeclarationsWithMetaTestGenerated.java +++ b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/annotations/FirStandaloneNormalAnalysisSourceModuleAnalysisApiAnnotationsOnDeclarationsWithMetaTestGenerated.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2022 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. */ diff --git a/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/emptyJavaSpreadParameter.kt b/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/emptyJavaSpreadParameter.kt new file mode 100644 index 00000000000..19f66c14645 --- /dev/null +++ b/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/emptyJavaSpreadParameter.kt @@ -0,0 +1,10 @@ +// FILE: A.java +public @interface A { + String[] value() default {"foo", "bar"}; +} + +// FILE: Test.kt +annotation class B(vararg val a: A) + +@B(A(), A(*[])) +class Foo \ No newline at end of file diff --git a/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/emptyJavaSpreadParameter.txt b/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/emptyJavaSpreadParameter.txt new file mode 100644 index 00000000000..70171cf7f84 --- /dev/null +++ b/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/emptyJavaSpreadParameter.txt @@ -0,0 +1,5 @@ +KtDeclaration: KtClass Foo +annotations: [ + B(a = [/A, /A(value = [], )]) + psi: KtAnnotationEntry +] diff --git a/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/varargComplexParameter.kt b/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/varargComplexParameter.kt new file mode 100644 index 00000000000..aab06b46e22 --- /dev/null +++ b/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/varargComplexParameter.kt @@ -0,0 +1,5 @@ +annotation class A(vararg val strings: String) +annotation class AArray(vararg val value: A) + +@AArray(A(strings = ["foo", "bar"])) +class Foo \ No newline at end of file diff --git a/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/varargComplexParameter.txt b/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/varargComplexParameter.txt new file mode 100644 index 00000000000..71a597cbdbc --- /dev/null +++ b/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/varargComplexParameter.txt @@ -0,0 +1,5 @@ +KtDeclaration: KtClass Foo +annotations: [ + AArray(value = [/A(strings = ["foo", "bar"], )]) + psi: KtAnnotationEntry +] diff --git a/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/varargNamedParameter.kt b/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/varargNamedParameter.kt new file mode 100644 index 00000000000..16a32fedd1a --- /dev/null +++ b/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/varargNamedParameter.kt @@ -0,0 +1,4 @@ +annotation class A(vararg val strings: String) + +@A(strings = ["foo", "bar"]) +class Foo diff --git a/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/varargNamedParameter.txt b/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/varargNamedParameter.txt new file mode 100644 index 00000000000..5cf42aaec39 --- /dev/null +++ b/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/varargNamedParameter.txt @@ -0,0 +1,5 @@ +KtDeclaration: KtClass Foo +annotations: [ + A(strings = ["foo", "bar"]) + psi: KtAnnotationEntry +] diff --git a/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/varargSpreadParameter.descriptors.txt b/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/varargSpreadParameter.descriptors.txt new file mode 100644 index 00000000000..9af69a98e27 --- /dev/null +++ b/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/varargSpreadParameter.descriptors.txt @@ -0,0 +1,5 @@ +KtDeclaration: KtClass Foo +annotations: [ + A(strings = [["foo", "bar"], "baz", ["quux"]]) + psi: KtAnnotationEntry +] diff --git a/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/varargSpreadParameter.kt b/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/varargSpreadParameter.kt new file mode 100644 index 00000000000..ee1f2dcf310 --- /dev/null +++ b/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/varargSpreadParameter.kt @@ -0,0 +1,4 @@ +annotation class A(vararg val strings: String) + +@A(*arrayOf("foo", "bar"), "baz", *["quux"]) +class Foo \ No newline at end of file diff --git a/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/varargSpreadParameter.txt b/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/varargSpreadParameter.txt new file mode 100644 index 00000000000..01c50d8ed69 --- /dev/null +++ b/analysis/analysis-api/testData/annotations/annotationsOnDeclaration/direct/varargSpreadParameter.txt @@ -0,0 +1,5 @@ +KtDeclaration: KtClass Foo +annotations: [ + A(strings = ["foo", "bar", "baz", "quux"]) + psi: KtAnnotationEntry +] diff --git a/analysis/analysis-api/testData/annotations/metaAnnotations/onProperty_javaAnnotation_varargParameter.txt b/analysis/analysis-api/testData/annotations/metaAnnotations/onProperty_javaAnnotation_varargParameter.txt index 777fb0a9a74..04659bf798c 100644 --- a/analysis/analysis-api/testData/annotations/metaAnnotations/onProperty_javaAnnotation_varargParameter.txt +++ b/analysis/analysis-api/testData/annotations/metaAnnotations/onProperty_javaAnnotation_varargParameter.txt @@ -3,7 +3,7 @@ annotations: [ JavaAnno(value = [java.lang.annotation.ElementType.FIELD, java.lang.annotation.ElementType.METHOD]) psi: KtAnnotationEntry annotations: [ - kotlin/annotation/Target(allowedTargets = error("non-annotation value")) + kotlin/annotation/Target(allowedTargets = [kotlin.annotation.AnnotationTarget.FIELD, kotlin.annotation.AnnotationTarget.FUNCTION, kotlin.annotation.AnnotationTarget.PROPERTY_GETTER, kotlin.annotation.AnnotationTarget.PROPERTY_SETTER]) psi: null annotations: [ kotlin/annotation/Target(allowedTargets = [kotlin.annotation.AnnotationTarget.ANNOTATION_CLASS])