diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/intermediate/PropertyLValue.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/intermediate/PropertyLValue.kt index af1804d7acb..b784bef3198 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/intermediate/PropertyLValue.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/intermediate/PropertyLValue.kt @@ -173,9 +173,15 @@ class AccessorPropertyLValue( override fun store(irExpression: IrExpression) = callReceiver.adjustForCallee(setterDescriptor!!).call { dispatchReceiverValue, extensionReceiverValue, contextReceiverValues -> + // We translate getX/setX methods coming from Java into Kotlin properties, even if + // the setX call has a non-void return type. + val returnType = setterDescriptor.returnType?.let { + context.typeTranslator.translateType(it) + } ?: context.irBuiltIns.unitType + IrCallImpl( startOffset, endOffset, - context.irBuiltIns.unitType, + returnType, setter!!, typeArgumentsCount, 1 + contextReceiverValues.size, origin,