From d0a420fad99464fb75aca867bab7b2c90a6b70ce Mon Sep 17 00:00:00 2001 From: Dmitrii Gridin Date: Fri, 11 Nov 2022 09:24:11 +0100 Subject: [PATCH] [FIR] FirCallCompleter: simplify code ^KT-54417 --- .../fir/resolve/inference/FirCallCompleter.kt | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/FirCallCompleter.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/FirCallCompleter.kt index 2fff4b616fd..c3ea856fb08 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/FirCallCompleter.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/FirCallCompleter.kt @@ -11,6 +11,7 @@ import org.jetbrains.kotlin.fir.* import org.jetbrains.kotlin.fir.declarations.FirAnonymousFunction import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin import org.jetbrains.kotlin.fir.declarations.FirFunction +import org.jetbrains.kotlin.fir.declarations.FirReceiverParameter import org.jetbrains.kotlin.fir.declarations.builder.buildContextReceiver import org.jetbrains.kotlin.fir.declarations.builder.buildReceiverParameterCopy import org.jetbrains.kotlin.fir.declarations.builder.buildValueParameter @@ -44,6 +45,8 @@ import org.jetbrains.kotlin.types.model.StubTypeMarker import org.jetbrains.kotlin.types.model.TypeVariableMarker import org.jetbrains.kotlin.types.model.safeSubstitute import org.jetbrains.kotlin.utils.addToStdlib.runIf +import kotlin.contracts.InvocationKind +import kotlin.contracts.contract class FirCallCompleter( private val transformer: FirAbstractBodyResolveTransformerDispatcher, @@ -306,15 +309,13 @@ class FirCallCompleter( val expectedReturnTypeRef = expectedReturnType?.let { lambdaArgument.returnTypeRef.resolvedTypeFromPrototype(it) } - lambdaArgument.replaceReceiverParameter( - lambdaArgument.receiverParameter?.let { receiverParameter -> - receiverType?.approximateLambdaInputType()?.let { approximatedType -> - receiverParameter.apply { - replaceTypeRef(typeRef.resolvedTypeFromPrototype(approximatedType)) - } - } + if (receiverType == null) { + lambdaArgument.replaceReceiverParameter(null) + } else { + lambdaArgument.receiverParameter?.apply { + replaceTypeRef(typeRef.resolvedTypeFromPrototype(receiverType.approximateLambdaInputType())) } - ) + } if (contextReceivers.isNotEmpty()) { lambdaArgument.replaceContextReceivers(