FIR: avoid CCE in constants during annotation serialization

This commit is contained in:
Mikhail Glukhikh
2021-05-31 18:50:19 +03:00
committed by teamcityserver
parent 3127fad23d
commit da671eedc9
@@ -33,12 +33,12 @@ internal object FirToConstantValueTransformer : FirDefaultVisitor<ConstantValue<
return when (constExpression.kind) { return when (constExpression.kind) {
ConstantValueKind.Boolean -> BooleanValue(value as Boolean) ConstantValueKind.Boolean -> BooleanValue(value as Boolean)
ConstantValueKind.Char -> CharValue(value as Char) ConstantValueKind.Char -> CharValue(value as Char)
ConstantValueKind.Byte -> ByteValue(value as Byte) ConstantValueKind.Byte -> ByteValue((value as Number).toByte())
ConstantValueKind.UnsignedByte -> UByteValue(value as Byte) ConstantValueKind.UnsignedByte -> UByteValue((value as Number).toByte())
ConstantValueKind.Short -> ShortValue(value as Short) ConstantValueKind.Short -> ShortValue((value as Number).toShort())
ConstantValueKind.UnsignedShort -> UShortValue(value as Short) ConstantValueKind.UnsignedShort -> UShortValue((value as Number).toShort())
ConstantValueKind.Int -> IntValue(value as Int) ConstantValueKind.Int -> IntValue((value as Number).toInt())
ConstantValueKind.UnsignedInt -> UIntValue(value as Int) ConstantValueKind.UnsignedInt -> UIntValue((value as Number).toInt())
ConstantValueKind.Long -> LongValue(value as Long) ConstantValueKind.Long -> LongValue(value as Long)
ConstantValueKind.UnsignedLong -> ULongValue(value as Long) ConstantValueKind.UnsignedLong -> ULongValue(value as Long)
ConstantValueKind.String -> StringValue(value as String) ConstantValueKind.String -> StringValue(value as String)
@@ -52,14 +52,14 @@ internal object FirToConstantValueTransformer : FirDefaultVisitor<ConstantValue<
override fun visitArrayOfCall( override fun visitArrayOfCall(
arrayOfCall: FirArrayOfCall, arrayOfCall: FirArrayOfCall,
data: Nothing? data: Nothing?
): ConstantValue<*>? { ): ConstantValue<*> {
return ArrayValue(arrayOfCall.argumentList.arguments.mapNotNull { it.accept(this, null) }) return ArrayValue(arrayOfCall.argumentList.arguments.mapNotNull { it.accept(this, null) })
} }
override fun visitAnnotationCall( override fun visitAnnotationCall(
annotationCall: FirAnnotationCall, annotationCall: FirAnnotationCall,
data: Nothing? data: Nothing?
): ConstantValue<*>? { ): ConstantValue<*> {
return AnnotationValue(annotationCall) return AnnotationValue(annotationCall)
} }