diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirAnnotationArgumentChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirAnnotationArgumentChecker.kt index 9047a062549..6d6f96a5f76 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirAnnotationArgumentChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirAnnotationArgumentChecker.kt @@ -80,9 +80,11 @@ object FirAnnotationArgumentChecker : FirAnnotationCallChecker() { if (usedNonConst) return FirErrors.NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION } is FirVarargArgumentsExpression -> { - for (arg in expression.arguments) - checkAnnotationArgumentWithSubElements(arg, fqName, session, reporter, context) - ?.let { reporter.reportOn(arg.source, it, context) } + for (arg in expression.arguments) { + val unwrappedArg = if (arg is FirSpreadArgumentExpression) arg.expression else arg + checkAnnotationArgumentWithSubElements(unwrappedArg, fqName, session, reporter, context) + ?.let { reporter.reportOn(unwrappedArg.source, it, context) } + } } else -> { val error = when (checkConstantArguments(expression, session)) { diff --git a/compiler/testData/diagnostics/tests/varargs/assignNonConstSingleArrayElementAsVarargInAnnotation.fir.kt b/compiler/testData/diagnostics/tests/varargs/assignNonConstSingleArrayElementAsVarargInAnnotation.fir.kt index a497f672850..c2c506d90bb 100644 --- a/compiler/testData/diagnostics/tests/varargs/assignNonConstSingleArrayElementAsVarargInAnnotation.fir.kt +++ b/compiler/testData/diagnostics/tests/varargs/assignNonConstSingleArrayElementAsVarargInAnnotation.fir.kt @@ -22,5 +22,5 @@ fun foo4() {} @Anno(value = *nonConstArray) fun bar1() {} -@Anno(*nonConstArray) +@Anno(*nonConstArray) fun bar2() {} diff --git a/compiler/testData/diagnostics/tests/varargs/assignNonConstSingleArrayElementAsVarargInAnnotationError.fir.kt b/compiler/testData/diagnostics/tests/varargs/assignNonConstSingleArrayElementAsVarargInAnnotationError.fir.kt index 2f9fa270f42..b7a6af9478c 100644 --- a/compiler/testData/diagnostics/tests/varargs/assignNonConstSingleArrayElementAsVarargInAnnotationError.fir.kt +++ b/compiler/testData/diagnostics/tests/varargs/assignNonConstSingleArrayElementAsVarargInAnnotationError.fir.kt @@ -22,5 +22,5 @@ fun foo4() {} @Anno(value = *nonConstArray) fun bar1() {} -@Anno(*nonConstArray) +@Anno(*nonConstArray) fun bar2() {} diff --git a/compiler/testData/diagnostics/testsWithStdLib/annotations/annotationParameterMustBeConstant/vararg.fir.kt b/compiler/testData/diagnostics/testsWithStdLib/annotations/annotationParameterMustBeConstant/vararg.fir.kt index 76eabfc83a1..ac380240bc3 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/annotations/annotationParameterMustBeConstant/vararg.fir.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/annotations/annotationParameterMustBeConstant/vararg.fir.kt @@ -6,10 +6,10 @@ annotation class Ann(vararg val i: Int) @Ann(i2) @Ann(i3) @Ann(i, i2, i3) -@Ann(*intArrayOf(i)) +@Ann(*intArrayOf(i)) @Ann(*intArrayOf(i2)) -@Ann(*intArrayOf(i3)) -@Ann(*intArrayOf(i, i2, i3)) +@Ann(*intArrayOf(i3)) +@Ann(*intArrayOf(i, i2, i3)) class Test var i = 1 @@ -22,6 +22,6 @@ fun foo(): Int = 1 @Repeatable annotation class AnnAnn(vararg val i: Ann) @AnnAnn(*arrayOf(Ann(1))) -@AnnAnn(*arrayOf(iAnn)) +@AnnAnn(*arrayOf(iAnn)) class TestAnn val iAnn = Ann(1)