diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/AnnotationResolver.java b/compiler/frontend/src/org/jetbrains/kotlin/resolve/AnnotationResolver.java index 06567399a62..bae071d01f3 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/AnnotationResolver.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/AnnotationResolver.java @@ -249,7 +249,7 @@ public class AnnotationResolver { if (parameterDescriptor.declaresDefaultValue() && constants.isEmpty()) return null; - return new ArrayValue(constants, parameterDescriptor.getType(), true, usesVariableAsConstant); + return new ArrayValue(constants, parameterDescriptor.getType(), usesVariableAsConstant); } else { // we should actually get only one element, but just in case of getting many, we take the last one diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/constants/evaluate/ConstantExpressionEvaluator.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/constants/evaluate/ConstantExpressionEvaluator.kt index de81d30ac63..994956bf95b 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/constants/evaluate/ConstantExpressionEvaluator.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/constants/evaluate/ConstantExpressionEvaluator.kt @@ -387,7 +387,7 @@ public class ConstantExpressionEvaluator private constructor(val trace: BindingT val varargType = resultingDescriptor.getValueParameters().first().getVarargElementType()!! val arguments = call.getValueArguments().values().flatMap { resolveArguments(it.getArguments(), varargType) } - return ArrayValue(arguments, resultingDescriptor.getReturnType()!!, true, arguments.any() { it.usesVariableAsConstant() }) + return ArrayValue(arguments, resultingDescriptor.getReturnType()!!, arguments.any() { it.usesVariableAsConstant() }) } // Ann() diff --git a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaAnnotationDescriptor.kt b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaAnnotationDescriptor.kt index 38b0a20fcbf..bb7c81b8a04 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaAnnotationDescriptor.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaAnnotationDescriptor.kt @@ -125,7 +125,7 @@ class LazyJavaAnnotationDescriptor( val values = elements.map { argument -> resolveAnnotationArgument(argument) ?: NullValue } - return ArrayValue(values, valueParameter.getType(), true, values.any { it.usesVariableAsConstant() }) + return ArrayValue(values, valueParameter.getType(), values.any { it.usesVariableAsConstant() }) } private fun resolveFromEnumValue(element: JavaField?): CompileTimeConstant<*>? { diff --git a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/BinaryClassAnnotationAndConstantLoaderImpl.kt b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/BinaryClassAnnotationAndConstantLoaderImpl.kt index 78504d9db8b..0a8c0c9984e 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/BinaryClassAnnotationAndConstantLoaderImpl.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/BinaryClassAnnotationAndConstantLoaderImpl.kt @@ -107,7 +107,7 @@ public class BinaryClassAnnotationAndConstantLoaderImpl( val parameter = DescriptorResolverUtils.getAnnotationParameterByName(name, annotationClass) if (parameter != null) { elements.trimToSize() - arguments[parameter] = ArrayValue(elements, parameter.getType(), true, false) + arguments[parameter] = ArrayValue(elements, parameter.getType(), false) } } } diff --git a/core/descriptors/src/org/jetbrains/kotlin/resolve/constants/ArrayValue.kt b/core/descriptors/src/org/jetbrains/kotlin/resolve/constants/ArrayValue.kt index 44ee6d3f965..137f84f1012 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/resolve/constants/ArrayValue.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/resolve/constants/ArrayValue.kt @@ -24,8 +24,8 @@ import java.util.* public class ArrayValue( value: List>, private val type: JetType, - canBeUsedInAnnotations: Boolean, usesVariableAsConstant: Boolean -) : CompileTimeConstant>>(value, canBeUsedInAnnotations, false, usesVariableAsConstant) { + usesVariableAsConstant: Boolean +) : CompileTimeConstant>>(value, true, false, usesVariableAsConstant) { init { assert(KotlinBuiltIns.isArray(type) || KotlinBuiltIns.isPrimitiveArray(type)) { "Type should be an array, but was " + type + ": " + value } diff --git a/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/AnnotationDeserializer.kt b/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/AnnotationDeserializer.kt index d4930a87147..25faaeb8d90 100644 --- a/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/AnnotationDeserializer.kt +++ b/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/AnnotationDeserializer.kt @@ -110,9 +110,11 @@ public class AnnotationDeserializer(private val module: ModuleDescriptor) { val expectedElementType = builtIns.getArrayElementType(if (expectedIsArray) expectedType else actualArrayType) ArrayValue( - arrayElements.map { resolveValue(expectedElementType, it, nameResolver) }, + arrayElements.map { + resolveValue(expectedElementType, it, nameResolver) + }, actualArrayType, - true, true + true ) } else -> error("Unsupported annotation argument type: ${value.getType()} (expected $expectedType)")