diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLoadK1CompiledJvmKotlinTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLoadK1CompiledJvmKotlinTestGenerated.java index 4dc76de5bca..3d55b2837db 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLoadK1CompiledJvmKotlinTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLoadK1CompiledJvmKotlinTestGenerated.java @@ -60,6 +60,12 @@ public class FirLoadK1CompiledJvmKotlinTestGenerated extends AbstractFirLoadK1Co runTest("compiler/testData/loadJava/compiledKotlin/annotations/AnnotationOnTypeParameter.kt"); } + @Test + @TestMetadata("AnnotationWithVarargParam.kt") + public void testAnnotationWithVarargParam() throws Exception { + runTest("compiler/testData/loadJava/compiledKotlin/annotations/AnnotationWithVarargParam.kt"); + } + @Test @TestMetadata("ClassLiteralArguments.kt") public void testClassLiteralArguments() throws Exception { diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLoadK2CompiledJvmKotlinTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLoadK2CompiledJvmKotlinTestGenerated.java index 79bd0b8d4b2..144d6ffcaeb 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLoadK2CompiledJvmKotlinTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLoadK2CompiledJvmKotlinTestGenerated.java @@ -60,6 +60,12 @@ public class FirLoadK2CompiledJvmKotlinTestGenerated extends AbstractFirLoadK2Co runTest("compiler/testData/loadJava/compiledKotlin/annotations/AnnotationOnTypeParameter.kt"); } + @Test + @TestMetadata("AnnotationWithVarargParam.kt") + public void testAnnotationWithVarargParam() throws Exception { + runTest("compiler/testData/loadJava/compiledKotlin/annotations/AnnotationWithVarargParam.kt"); + } + @Test @TestMetadata("ClassLiteralArguments.kt") public void testClassLiteralArguments() throws Exception { diff --git a/compiler/fir/fir-serialization/src/org/jetbrains/kotlin/fir/serialization/constant/FirToConstantValueTransformer.kt b/compiler/fir/fir-serialization/src/org/jetbrains/kotlin/fir/serialization/constant/FirToConstantValueTransformer.kt index 83f9adc4d45..87317b7c116 100644 --- a/compiler/fir/fir-serialization/src/org/jetbrains/kotlin/fir/serialization/constant/FirToConstantValueTransformer.kt +++ b/compiler/fir/fir-serialization/src/org/jetbrains/kotlin/fir/serialization/constant/FirToConstantValueTransformer.kt @@ -14,14 +14,15 @@ import org.jetbrains.kotlin.fir.declarations.FirEnumEntry import org.jetbrains.kotlin.fir.declarations.utils.isConst import org.jetbrains.kotlin.fir.declarations.utils.isFinal import org.jetbrains.kotlin.fir.expressions.* -import org.jetbrains.kotlin.fir.render import org.jetbrains.kotlin.fir.java.declarations.FirJavaField +import org.jetbrains.kotlin.fir.render import org.jetbrains.kotlin.fir.resolve.toFirRegularClassSymbol import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirArrayOfCallTransformer import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirArrayOfCallTransformer.Companion.isArrayOfCall import org.jetbrains.kotlin.fir.symbols.impl.FirConstructorSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol -import org.jetbrains.kotlin.fir.types.* +import org.jetbrains.kotlin.fir.types.coneType +import org.jetbrains.kotlin.fir.types.coneTypeUnsafe import org.jetbrains.kotlin.fir.visitors.FirDefaultVisitor import org.jetbrains.kotlin.types.ConstantValueKind @@ -49,6 +50,11 @@ internal data class FirToConstantValueTransformerData( internal abstract class FirToConstantValueTransformer( private val failOnNonConst: Boolean, ) : FirDefaultVisitor?, FirToConstantValueTransformerData>() { + private fun FirExpression.toConstantValue(data: FirToConstantValueTransformerData): ConstantValue<*>? { + return data.constValueProvider?.findConstantValueFor(this) + ?: accept(this@FirToConstantValueTransformer, data) + } + override fun visitElement( element: FirElement, data: FirToConstantValueTransformerData @@ -87,7 +93,7 @@ internal abstract class FirToConstantValueTransformer( stringConcatenationCall: FirStringConcatenationCall, data: FirToConstantValueTransformerData ): ConstantValue<*>? { - val strings = stringConcatenationCall.argumentList.arguments.map { it.accept(this, data) } + val strings = stringConcatenationCall.argumentList.arguments.map { it.toConstantValue(data) } if (strings.any { it == null || it !is StringValue }) return null return StringValue(strings.joinToString(separator = "") { (it as StringValue).value }) } @@ -96,7 +102,7 @@ internal abstract class FirToConstantValueTransformer( arrayOfCall: FirArrayOfCall, data: FirToConstantValueTransformerData ): ConstantValue<*> { - return ArrayValue(arrayOfCall.argumentList.arguments.mapNotNull { it.accept(this, data) }) + return ArrayValue(arrayOfCall.argumentList.arguments.mapNotNull { it.toConstantValue(data) }) } override fun visitAnnotation( @@ -132,12 +138,12 @@ internal abstract class FirToConstantValueTransformer( } symbol is FirPropertySymbol -> { - if (symbol.fir.isConst) symbol.fir.initializer?.accept(this, data) else null + if (symbol.fir.isConst) symbol.fir.initializer?.toConstantValue(data) else null } fir is FirJavaField -> { if (fir.isFinal) { - fir.initializer?.accept(this, data) + fir.initializer?.toConstantValue(data) } else { null } @@ -156,7 +162,7 @@ internal abstract class FirToConstantValueTransformer( symbol.callableId.packageName.asString() == "kotlin" -> { val dispatchReceiver = qualifiedAccessExpression.dispatchReceiver - val dispatchReceiverValue by lazy { dispatchReceiver.accept(this, data) } + val dispatchReceiverValue by lazy { dispatchReceiver.toConstantValue(data) } when (symbol.callableId.callableName.asString()) { "toByte" -> ByteValue((dispatchReceiverValue!!.value as Number).toByte()) "toLong" -> LongValue((dispatchReceiverValue!!.value as Number).toLong()) @@ -201,16 +207,22 @@ internal abstract class FirToConstantValueTransformer( override fun visitVarargArgumentsExpression( varargArgumentsExpression: FirVarargArgumentsExpression, - data: FirToConstantValueTransformerData + data: FirToConstantValueTransformerData, ): ConstantValue<*> { - return ArrayValue(varargArgumentsExpression.arguments.mapNotNull { it.accept(this, data) }) + val arguments = varargArgumentsExpression.arguments.let { + // Named, spread or array literal arguments for vararg parameters have the form Vararg(Named/Spread?(ArrayOfCall(..))). + // We need to extract the ArrayOfCall, otherwise we will get two nested ArrayValue as a result. + (it.singleOrNull()?.unwrapArgument() as? FirArrayOfCall)?.arguments ?: it + } + + return ArrayValue(arguments.mapNotNull { it.toConstantValue(data) }) } - override fun visitNamedArgumentExpression( - namedArgumentExpression: FirNamedArgumentExpression, - data: FirToConstantValueTransformerData + override fun visitWrappedArgumentExpression( + wrappedArgumentExpression: FirWrappedArgumentExpression, + data: FirToConstantValueTransformerData, ): ConstantValue<*>? { - return namedArgumentExpression.expression.accept(this, data) + return wrappedArgumentExpression.expression.toConstantValue(data) } } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/BodyResolveUtils.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/BodyResolveUtils.kt index a26df12b455..9e991ef6f42 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/BodyResolveUtils.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/BodyResolveUtils.kt @@ -5,8 +5,7 @@ package org.jetbrains.kotlin.fir.resolve.transformers.body.resolve -import org.jetbrains.kotlin.KtFakeSourceElementKind -import org.jetbrains.kotlin.fakeElement +import org.jetbrains.kotlin.* import org.jetbrains.kotlin.fir.* import org.jetbrains.kotlin.fir.declarations.FirValueParameter import org.jetbrains.kotlin.fir.diagnostics.ConeSimpleDiagnostic @@ -45,6 +44,10 @@ internal fun remapArgumentsWithVararg( //todo ideally we should use here a source from the use-site and not from the declaration-site this.varargElementType = varargParameterTypeRef.withReplacedConeType(varargElementType, KtFakeSourceElementKind.VarargArgument) this.typeRef = varargParameterTypeRef.withReplacedConeType(varargArrayType, KtFakeSourceElementKind.VarargArgument) + var startOffset = Int.MAX_VALUE + var endOffset = 0 + var firstVarargElementSource: KtSourceElement? = null + for ((i, arg) in argumentList.withIndex()) { val valueParameter = argumentMapping.getValue(arg) // Collect arguments if `arg` is a vararg argument of interest or other vararg arguments. @@ -53,9 +56,9 @@ internal fun remapArgumentsWithVararg( (valueParameter.isVararg && arg !is FirNamedArgumentExpression) ) { arguments += arg - if (this.source == null) { - this.source = arg.source?.fakeElement(KtFakeSourceElementKind.VarargArgument) - } + startOffset = minOf(startOffset, arg.source?.startOffset ?: Int.MAX_VALUE) + endOffset = maxOf(endOffset, arg.source?.endOffset ?: 0) + if (firstVarargElementSource == null) firstVarargElementSource = arg.source } else if (arguments.isEmpty()) { // `arg` is BEFORE the vararg arguments. newArgumentMapping[arg] = valueParameter @@ -65,6 +68,8 @@ internal fun remapArgumentsWithVararg( break } } + + source = firstVarargElementSource?.fakeElement(KtFakeSourceElementKind.VarargArgument, startOffset, endOffset) } newArgumentMapping[varargArgument] = varargParameter diff --git a/compiler/frontend.common/src/org/jetbrains/kotlin/KtSourceElement.kt b/compiler/frontend.common/src/org/jetbrains/kotlin/KtSourceElement.kt index a20e395afd0..6df01c5f9f8 100644 --- a/compiler/frontend.common/src/org/jetbrains/kotlin/KtSourceElement.kt +++ b/compiler/frontend.common/src/org/jetbrains/kotlin/KtSourceElement.kt @@ -422,7 +422,10 @@ class KtRealPsiSourceElement(psi: PsiElement) : KtPsiSourceElement(psi) { override val kind: KtSourceElementKind get() = KtRealSourceElementKind } -class KtFakeSourceElement(psi: PsiElement, override val kind: KtFakeSourceElementKind) : KtPsiSourceElement(psi) { +open class KtFakeSourceElement( + psi: PsiElement, + override val kind: KtFakeSourceElementKind, +) : KtPsiSourceElement(psi) { override fun equals(other: Any?): Boolean { if (this === other) return true if (javaClass != other?.javaClass) return false @@ -442,11 +445,49 @@ class KtFakeSourceElement(psi: PsiElement, override val kind: KtFakeSourceElemen } } -fun KtSourceElement.fakeElement(newKind: KtFakeSourceElementKind): KtSourceElement { +private class KtFakeSourceElementWithOffsets( + psi: PsiElement, + kind: KtFakeSourceElementKind, + override val startOffset: Int, + override val endOffset: Int, +) : KtFakeSourceElement(psi, kind) { + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (other !is KtFakeSourceElementWithOffsets) return false + if (!super.equals(other)) return false + + if (kind != other.kind) return false + if (startOffset != other.startOffset) return false + return endOffset == other.endOffset + } + + override fun hashCode(): Int { + var result = super.hashCode() + result = 31 * result + kind.hashCode() + result = 31 * result + startOffset + result = 31 * result + endOffset + return result + } +} + +fun KtSourceElement.fakeElement( + newKind: KtFakeSourceElementKind, + startOffset: Int = -1, + endOffset: Int = -1, +): KtSourceElement { if (kind == newKind) return this return when (this) { - is KtLightSourceElement -> KtLightSourceElement(lighterASTNode, startOffset, endOffset, treeStructure, newKind) - is KtPsiSourceElement -> KtFakeSourceElement(psi, newKind) + is KtLightSourceElement -> KtLightSourceElement( + lighterASTNode, + if (startOffset != -1) startOffset else this.startOffset, + if (endOffset != -1) endOffset else this.endOffset, + treeStructure, + newKind + ) + is KtPsiSourceElement -> when { + startOffset != -1 && endOffset != -1 -> KtFakeSourceElementWithOffsets(psi, newKind, startOffset, endOffset) + else -> KtFakeSourceElement(psi, newKind) + } } } diff --git a/compiler/testData/loadJava/compiledKotlin/annotations/AnnotationWithVarargParam.fir.txt b/compiler/testData/loadJava/compiledKotlin/annotations/AnnotationWithVarargParam.fir.txt new file mode 100644 index 00000000000..0d4243b9aab --- /dev/null +++ b/compiler/testData/loadJava/compiledKotlin/annotations/AnnotationWithVarargParam.fir.txt @@ -0,0 +1,42 @@ +public final annotation class A : R|kotlin/Annotation| { + public final val s: R|kotlin/Array| + public get(): R|kotlin/Array| + + public constructor(vararg s: R|kotlin/Array|): R|test/A| + +} + +@R|test/A|(s = (String(1), String(2))) public final class B : R|kotlin/Any| { + public constructor(): R|test/B| + +} + +@R|test/A|(s = (String(1), String(2))) public final class D : R|kotlin/Any| { + public constructor(): R|test/D| + +} + +@R|test/A|(s = (String(1), String(2))) public final class E : R|kotlin/Any| { + public constructor(): R|test/E| + +} + +@R|test/A|(s = (String(1), String(2))) public final class F : R|kotlin/Any| { + public constructor(): R|test/F| + +} + +@R|test/A|(s = (String(1), String(2))) public final class H : R|kotlin/Any| { + public constructor(): R|test/H| + +} + +@R|test/A|(s = (String(1), String(2))) public final class I : R|kotlin/Any| { + public constructor(): R|test/I| + +} + +@R|test/A|(s = (String(1), String(2))) public final class J : R|kotlin/Any| { + public constructor(): R|test/J| + +} diff --git a/compiler/testData/loadJava/compiledKotlin/annotations/AnnotationWithVarargParam.kt b/compiler/testData/loadJava/compiledKotlin/annotations/AnnotationWithVarargParam.kt new file mode 100644 index 00000000000..a799a96d256 --- /dev/null +++ b/compiler/testData/loadJava/compiledKotlin/annotations/AnnotationWithVarargParam.kt @@ -0,0 +1,24 @@ +package test + +annotation class A(vararg val s: String) + +@A("1", "2") +class B + +@A(*["1", "2"]) +class D + +@A(s = ["1", "2"]) +class E + +@A(s = *["1", "2"]) +class F + +@A(*arrayOf("1", "2")) +class H + +@A(s = *arrayOf("1", "2")) +class I + +@A(s = arrayOf("1", "2")) +class J diff --git a/compiler/testData/loadJava/compiledKotlin/annotations/AnnotationWithVarargParam.txt b/compiler/testData/loadJava/compiledKotlin/annotations/AnnotationWithVarargParam.txt new file mode 100644 index 00000000000..5df01e58613 --- /dev/null +++ b/compiler/testData/loadJava/compiledKotlin/annotations/AnnotationWithVarargParam.txt @@ -0,0 +1,35 @@ +package test + +public final annotation class A : kotlin.Annotation { + /*primary*/ public constructor A(/*0*/ vararg s: kotlin.String /*kotlin.Array*/) + public final val s: kotlin.Array + public final fun ``(): kotlin.Array +} + +@test.A(s = {"1", "2"}) public final class B { + /*primary*/ public constructor B() +} + +@test.A(s = {"1", "2"}) public final class D { + /*primary*/ public constructor D() +} + +@test.A(s = {"1", "2"}) public final class E { + /*primary*/ public constructor E() +} + +@test.A(s = {"1", "2"}) public final class F { + /*primary*/ public constructor F() +} + +@test.A(s = {"1", "2"}) public final class H { + /*primary*/ public constructor H() +} + +@test.A(s = {"1", "2"}) public final class I { + /*primary*/ public constructor I() +} + +@test.A(s = {"1", "2"}) public final class J { + /*primary*/ public constructor J() +} diff --git a/compiler/testData/loadJava/compiledKotlin/annotations/packageMembers/StringArrayArgument.fir.k2.klib.txt b/compiler/testData/loadJava/compiledKotlin/annotations/packageMembers/StringArrayArgument.fir.k2.klib.txt index a6686b5b367..7656f893861 100644 --- a/compiler/testData/loadJava/compiledKotlin/annotations/packageMembers/StringArrayArgument.fir.k2.klib.txt +++ b/compiler/testData/loadJava/compiledKotlin/annotations/packageMembers/StringArrayArgument.fir.k2.klib.txt @@ -3,7 +3,7 @@ public final val bar: R|kotlin/Int| @R|test/Anno|() public final fun baz(): R|kotlin/Unit| -@R|test/Anno|(t = String(live)) public final fun foo(): R|kotlin/Unit| +@R|test/Anno|(t = (String(live), String(long))) public final fun foo(): R|kotlin/Unit| public final annotation class Anno : R|kotlin/Annotation| { public final val t: R|kotlin/Array| diff --git a/compiler/testData/loadJava/compiledKotlinWithStdlib/annotations/AnnotationInAnnotationArguments.fir.k2.jvm.txt b/compiler/testData/loadJava/compiledKotlinWithStdlib/annotations/AnnotationInAnnotationArguments.fir.k2.jvm.txt deleted file mode 100644 index 5cb215b3a86..00000000000 --- a/compiler/testData/loadJava/compiledKotlinWithStdlib/annotations/AnnotationInAnnotationArguments.fir.k2.jvm.txt +++ /dev/null @@ -1,46 +0,0 @@ -@R|test/OptionGroups|(o1 = @R|test/StringOptions|(option = (String(abc), String(d), String(ef))) , o2 = @R|test/EnumOption|(option = R|test/E.ENTRY|) ) public final class AnnotationInAnnotationArguments : R|kotlin/Any| { - public constructor(): R|test/AnnotationInAnnotationArguments| - -} - -public final enum class E : R|kotlin/Enum| { - private constructor(): R|test/E| - - public final static enum entry ENTRY: R|test/E| - public final static fun values(): R|kotlin/Array| { - } - - public final static fun valueOf(value: R|kotlin/String|): R|test/E| { - } - - public final static val entries: R|kotlin/enums/EnumEntries| - public get(): R|kotlin/enums/EnumEntries| - -} - -public final annotation class EnumOption : R|kotlin/Annotation| { - public final val option: R|test/E| - public get(): R|test/E| - - public constructor(option: R|test/E|): R|test/EnumOption| - -} - -public final annotation class OptionGroups : R|kotlin/Annotation| { - public final val o1: R|test/StringOptions| - public get(): R|test/StringOptions| - - public final val o2: R|test/EnumOption| - public get(): R|test/EnumOption| - - public constructor(o1: R|test/StringOptions|, o2: R|test/EnumOption|): R|test/OptionGroups| - -} - -public final annotation class StringOptions : R|kotlin/Annotation| { - public final val option: R|kotlin/Array| - public get(): R|kotlin/Array| - - public constructor(vararg option: R|kotlin/Array|): R|test/StringOptions| - -} diff --git a/compiler/testData/loadJava/compiledKotlinWithStdlib/annotations/AnnotationInAnnotationArguments.fir.k2.klib.txt b/compiler/testData/loadJava/compiledKotlinWithStdlib/annotations/AnnotationInAnnotationArguments.fir.k2.klib.txt deleted file mode 100644 index 7c8893de891..00000000000 --- a/compiler/testData/loadJava/compiledKotlinWithStdlib/annotations/AnnotationInAnnotationArguments.fir.k2.klib.txt +++ /dev/null @@ -1,46 +0,0 @@ -@R|test/OptionGroups|(o1 = @R|test/StringOptions|(option = String(abc)) , o2 = @R|test/EnumOption|(option = R|test/E.ENTRY|) ) public final class AnnotationInAnnotationArguments : R|kotlin/Any| { - public constructor(): R|test/AnnotationInAnnotationArguments| - -} - -public final enum class E : R|kotlin/Enum| { - private constructor(): R|test/E| - - public final static enum entry ENTRY: R|test/E| - public final static fun values(): R|kotlin/Array| { - } - - public final static fun valueOf(value: R|kotlin/String|): R|test/E| { - } - - public final static val entries: R|kotlin/enums/EnumEntries| - public get(): R|kotlin/enums/EnumEntries| - -} - -public final annotation class EnumOption : R|kotlin/Annotation| { - public final val option: R|test/E| - public get(): R|test/E| - - public constructor(option: R|test/E|): R|test/EnumOption| - -} - -public final annotation class OptionGroups : R|kotlin/Annotation| { - public final val o1: R|test/StringOptions| - public get(): R|test/StringOptions| - - public final val o2: R|test/EnumOption| - public get(): R|test/EnumOption| - - public constructor(o1: R|test/StringOptions|, o2: R|test/EnumOption|): R|test/OptionGroups| - -} - -public final annotation class StringOptions : R|kotlin/Annotation| { - public final val option: R|kotlin/Array| - public get(): R|kotlin/Array| - - public constructor(vararg option: R|kotlin/Array|): R|test/StringOptions| - -} diff --git a/compiler/testData/loadJava/compiledKotlinWithStdlib/annotations/AnnotationInAnnotationArguments.fir.k1.jvm.txt b/compiler/testData/loadJava/compiledKotlinWithStdlib/annotations/AnnotationInAnnotationArguments.fir.txt similarity index 100% rename from compiler/testData/loadJava/compiledKotlinWithStdlib/annotations/AnnotationInAnnotationArguments.fir.k1.jvm.txt rename to compiler/testData/loadJava/compiledKotlinWithStdlib/annotations/AnnotationInAnnotationArguments.fir.txt diff --git a/compiler/testData/loadJava/compiledKotlinWithStdlib/annotations/AnnotationInAnnotationArguments.kt b/compiler/testData/loadJava/compiledKotlinWithStdlib/annotations/AnnotationInAnnotationArguments.kt index a7b6459cd70..d944fd22331 100644 --- a/compiler/testData/loadJava/compiledKotlinWithStdlib/annotations/AnnotationInAnnotationArguments.kt +++ b/compiler/testData/loadJava/compiledKotlinWithStdlib/annotations/AnnotationInAnnotationArguments.kt @@ -1,4 +1,3 @@ -// PLATFORM_DEPENDANT_METADATA // ALLOW_AST_ACCESS package test diff --git a/compiler/tests-gen/org/jetbrains/kotlin/jvm/compiler/LoadJavaTestGenerated.java b/compiler/tests-gen/org/jetbrains/kotlin/jvm/compiler/LoadJavaTestGenerated.java index 1bdaac8da5d..e5d8425424a 100644 --- a/compiler/tests-gen/org/jetbrains/kotlin/jvm/compiler/LoadJavaTestGenerated.java +++ b/compiler/tests-gen/org/jetbrains/kotlin/jvm/compiler/LoadJavaTestGenerated.java @@ -1749,6 +1749,11 @@ public class LoadJavaTestGenerated extends AbstractLoadJavaTest { runTest("compiler/testData/loadJava/compiledKotlin/annotations/AnnotationOnTypeParameter.kt"); } + @TestMetadata("AnnotationWithVarargParam.kt") + public void testAnnotationWithVarargParam() throws Exception { + runTest("compiler/testData/loadJava/compiledKotlin/annotations/AnnotationWithVarargParam.kt"); + } + @TestMetadata("ClassLiteralArguments.kt") public void testClassLiteralArguments() throws Exception { runTest("compiler/testData/loadJava/compiledKotlin/annotations/ClassLiteralArguments.kt"); diff --git a/compiler/tests-gen/org/jetbrains/kotlin/jvm/compiler/LoadKotlinWithTypeTableTestGenerated.java b/compiler/tests-gen/org/jetbrains/kotlin/jvm/compiler/LoadKotlinWithTypeTableTestGenerated.java index be94b496acc..4b8c574cf51 100644 --- a/compiler/tests-gen/org/jetbrains/kotlin/jvm/compiler/LoadKotlinWithTypeTableTestGenerated.java +++ b/compiler/tests-gen/org/jetbrains/kotlin/jvm/compiler/LoadKotlinWithTypeTableTestGenerated.java @@ -61,6 +61,11 @@ public class LoadKotlinWithTypeTableTestGenerated extends AbstractLoadKotlinWith runTest("compiler/testData/loadJava/compiledKotlin/annotations/AnnotationOnTypeParameter.kt"); } + @TestMetadata("AnnotationWithVarargParam.kt") + public void testAnnotationWithVarargParam() throws Exception { + runTest("compiler/testData/loadJava/compiledKotlin/annotations/AnnotationWithVarargParam.kt"); + } + @TestMetadata("ClassLiteralArguments.kt") public void testClassLiteralArguments() throws Exception { runTest("compiler/testData/loadJava/compiledKotlin/annotations/ClassLiteralArguments.kt"); diff --git a/compiler/tests-gen/org/jetbrains/kotlin/jvm/compiler/ir/IrLoadJavaTestGenerated.java b/compiler/tests-gen/org/jetbrains/kotlin/jvm/compiler/ir/IrLoadJavaTestGenerated.java index b816356a72e..0e7b798b4bd 100644 --- a/compiler/tests-gen/org/jetbrains/kotlin/jvm/compiler/ir/IrLoadJavaTestGenerated.java +++ b/compiler/tests-gen/org/jetbrains/kotlin/jvm/compiler/ir/IrLoadJavaTestGenerated.java @@ -1750,6 +1750,11 @@ public class IrLoadJavaTestGenerated extends AbstractIrLoadJavaTest { runTest("compiler/testData/loadJava/compiledKotlin/annotations/AnnotationOnTypeParameter.kt"); } + @TestMetadata("AnnotationWithVarargParam.kt") + public void testAnnotationWithVarargParam() throws Exception { + runTest("compiler/testData/loadJava/compiledKotlin/annotations/AnnotationWithVarargParam.kt"); + } + @TestMetadata("ClassLiteralArguments.kt") public void testClassLiteralArguments() throws Exception { runTest("compiler/testData/loadJava/compiledKotlin/annotations/ClassLiteralArguments.kt"); diff --git a/compiler/tests-gen/org/jetbrains/kotlin/jvm/compiler/javac/LoadJavaUsingJavacTestGenerated.java b/compiler/tests-gen/org/jetbrains/kotlin/jvm/compiler/javac/LoadJavaUsingJavacTestGenerated.java index 73c671a4795..2f80b1254a4 100644 --- a/compiler/tests-gen/org/jetbrains/kotlin/jvm/compiler/javac/LoadJavaUsingJavacTestGenerated.java +++ b/compiler/tests-gen/org/jetbrains/kotlin/jvm/compiler/javac/LoadJavaUsingJavacTestGenerated.java @@ -1749,6 +1749,11 @@ public class LoadJavaUsingJavacTestGenerated extends AbstractLoadJavaUsingJavacT runTest("compiler/testData/loadJava/compiledKotlin/annotations/AnnotationOnTypeParameter.kt"); } + @TestMetadata("AnnotationWithVarargParam.kt") + public void testAnnotationWithVarargParam() throws Exception { + runTest("compiler/testData/loadJava/compiledKotlin/annotations/AnnotationWithVarargParam.kt"); + } + @TestMetadata("ClassLiteralArguments.kt") public void testClassLiteralArguments() throws Exception { runTest("compiler/testData/loadJava/compiledKotlin/annotations/ClassLiteralArguments.kt"); diff --git a/core/descriptors.runtime/tests/org/jetbrains/kotlin/jvm/runtime/JvmRuntimeDescriptorLoaderTestGenerated.java b/core/descriptors.runtime/tests/org/jetbrains/kotlin/jvm/runtime/JvmRuntimeDescriptorLoaderTestGenerated.java index e9df01c1701..58cc6cbcdd9 100644 --- a/core/descriptors.runtime/tests/org/jetbrains/kotlin/jvm/runtime/JvmRuntimeDescriptorLoaderTestGenerated.java +++ b/core/descriptors.runtime/tests/org/jetbrains/kotlin/jvm/runtime/JvmRuntimeDescriptorLoaderTestGenerated.java @@ -63,6 +63,11 @@ public class JvmRuntimeDescriptorLoaderTestGenerated extends AbstractJvmRuntimeD runTest("compiler/testData/loadJava/compiledKotlin/annotations/AnnotationOnTypeParameter.kt"); } + @TestMetadata("AnnotationWithVarargParam.kt") + public void testAnnotationWithVarargParam() throws Exception { + runTest("compiler/testData/loadJava/compiledKotlin/annotations/AnnotationWithVarargParam.kt"); + } + @TestMetadata("ClassLiteralArguments.kt") public void testClassLiteralArguments() throws Exception { runTest("compiler/testData/loadJava/compiledKotlin/annotations/ClassLiteralArguments.kt"); diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirLoadK2CompiledJsKotlinTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirLoadK2CompiledJsKotlinTestGenerated.java index c6a29353daf..2a4236220a4 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirLoadK2CompiledJsKotlinTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirLoadK2CompiledJsKotlinTestGenerated.java @@ -60,6 +60,12 @@ public class FirLoadK2CompiledJsKotlinTestGenerated extends AbstractFirLoadK2Com runTest("compiler/testData/loadJava/compiledKotlin/annotations/AnnotationOnTypeParameter.kt"); } + @Test + @TestMetadata("AnnotationWithVarargParam.kt") + public void testAnnotationWithVarargParam() throws Exception { + runTest("compiler/testData/loadJava/compiledKotlin/annotations/AnnotationWithVarargParam.kt"); + } + @Test @TestMetadata("ClassLiteralArguments.kt") public void testClassLiteralArguments() throws Exception {