From d62a7cc9d1064ad1cfca9cb0ee1247dee76b9216 Mon Sep 17 00:00:00 2001 From: Mikhael Bogdanov Date: Wed, 10 Jan 2018 10:34:05 +0100 Subject: [PATCH] Unwrap fake override on field access --- .../kotlin/backend/jvm/codegen/ExpressionCodegen.kt | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt index 1ae3e5821e3..a057b773c05 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt @@ -337,11 +337,14 @@ class ExpressionCodegen( private fun generateFieldValue(expression: IrFieldAccessExpression, data: BlockInfo): StackValue { val receiverValue = expression.receiver?.accept(this, data) ?: StackValue.none() val propertyDescriptor = expression.descriptor - val fieldType = typeMapper.mapType(propertyDescriptor.type) + + val realDescriptor = DescriptorUtils.unwrapFakeOverride(propertyDescriptor) + val fieldType = typeMapper.mapType(realDescriptor.original.type) val ownerType = typeMapper.mapImplementationOwner(propertyDescriptor) val fieldName = propertyDescriptor.name.asString() val isStatic = expression.receiver == null // TODO - return StackValue.field(fieldType, ownerType, fieldName, isStatic, receiverValue, propertyDescriptor) + + return StackValue.field(fieldType, ownerType, fieldName, isStatic, receiverValue, realDescriptor) } override fun visitGetField(expression: IrGetField, data: BlockInfo): StackValue {