From 1567b2709056c83d94d6666768606df9e7fd6d89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steven=20Sch=C3=A4fer?= Date: Wed, 28 Sep 2022 19:05:56 +0200 Subject: [PATCH] Psi2IR: Fix IR types for Java property setters with non-Unit return type --- .../kotlin/psi2ir/intermediate/PropertyLValue.kt | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) 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,