[FIR2IR] Fix using default values of annotation arguments

This commit is contained in:
Dmitriy Novozhilov
2021-03-05 11:03:02 +03:00
parent ca26c193ae
commit aa829c2321
2 changed files with 7 additions and 5 deletions
@@ -534,16 +534,19 @@ class CallAndReferenceGenerator(
if (annotationMode) { if (annotationMode) {
for ((index, parameter) in valueParameters.withIndex()) { for ((index, parameter) in valueParameters.withIndex()) {
if (parameter.isVararg && !argumentMapping.containsValue(parameter)) { if (parameter.isVararg && !argumentMapping.containsValue(parameter)) {
val elementType = parameter.returnTypeRef.toIrType() val defaultValue = parameter.defaultValue
putValueArgument( val value = if (defaultValue != null) {
index, convertArgument(defaultValue, parameter, ConeSubstitutor.Empty, annotationMode)
} else {
val elementType = parameter.returnTypeRef.toIrType()
IrVarargImpl( IrVarargImpl(
UNDEFINED_OFFSET, UNDEFINED_OFFSET,
UNDEFINED_OFFSET, UNDEFINED_OFFSET,
elementType, elementType,
elementType.toArrayOrPrimitiveArrayType(irBuiltIns) elementType.toArrayOrPrimitiveArrayType(irBuiltIns)
) )
) }
putValueArgument(index, value)
} }
} }
} }
@@ -1,5 +1,4 @@
// TARGET_BACKEND: JVM // TARGET_BACKEND: JVM
// IGNORE_BACKEND_FIR: JVM_IR
// WITH_RUNTIME // WITH_RUNTIME
// MODULE: lib // MODULE: lib
// FILE: JavaAnn.java // FILE: JavaAnn.java