IC Mangling: Use correct java field type if the type is inline class
in JVM_IR BE. #KT-26445
This commit is contained in:
+3
-1
@@ -12,6 +12,7 @@ import org.jetbrains.kotlin.backend.jvm.JvmLoweredStatementOrigin
|
|||||||
import org.jetbrains.kotlin.backend.jvm.intrinsics.IrIntrinsicMethods
|
import org.jetbrains.kotlin.backend.jvm.intrinsics.IrIntrinsicMethods
|
||||||
import org.jetbrains.kotlin.backend.jvm.intrinsics.JavaClassProperty
|
import org.jetbrains.kotlin.backend.jvm.intrinsics.JavaClassProperty
|
||||||
import org.jetbrains.kotlin.backend.jvm.ir.erasedUpperBound
|
import org.jetbrains.kotlin.backend.jvm.ir.erasedUpperBound
|
||||||
|
import org.jetbrains.kotlin.backend.jvm.ir.isFromJava
|
||||||
import org.jetbrains.kotlin.backend.jvm.lower.MultifileFacadeFileEntry
|
import org.jetbrains.kotlin.backend.jvm.lower.MultifileFacadeFileEntry
|
||||||
import org.jetbrains.kotlin.backend.jvm.lower.constantValue
|
import org.jetbrains.kotlin.backend.jvm.lower.constantValue
|
||||||
import org.jetbrains.kotlin.backend.jvm.lower.inlineclasses.unboxInlineClass
|
import org.jetbrains.kotlin.backend.jvm.lower.inlineclasses.unboxInlineClass
|
||||||
@@ -665,7 +666,8 @@ class ExpressionCodegen(
|
|||||||
?: receiverType ?: typeMapper.mapClass(callee.parentAsClass)
|
?: receiverType ?: typeMapper.mapClass(callee.parentAsClass)
|
||||||
val ownerName = ownerType.internalName
|
val ownerName = ownerType.internalName
|
||||||
val fieldName = callee.name.asString()
|
val fieldName = callee.name.asString()
|
||||||
val fieldType = callee.type.asmType
|
val calleeIrType = if (callee.isFromJava() && callee.type.isInlined()) callee.type.makeNullable() else callee.type
|
||||||
|
val fieldType = calleeIrType.asmType
|
||||||
return if (expression is IrSetField) {
|
return if (expression is IrSetField) {
|
||||||
val value = expression.value.accept(this, data)
|
val value = expression.value.accept(this, data)
|
||||||
// We only initialize enum entries with a subtype of `fieldType` and can avoid the CHECKCAST.
|
// We only initialize enum entries with a subtype of `fieldType` and can avoid the CHECKCAST.
|
||||||
|
|||||||
Reference in New Issue
Block a user