From b97ce3d6efecf86aae7328b7764e052c409dd2ef Mon Sep 17 00:00:00 2001 From: Denis Zharkov Date: Fri, 27 Mar 2020 16:33:42 +0300 Subject: [PATCH] FIR: Extract function in TowerLevelHandler --- .../fir/resolve/calls/TowerLevelHandler.kt | 63 +++++++++++-------- 1 file changed, 36 insertions(+), 27 deletions(-) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/TowerLevelHandler.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/TowerLevelHandler.kt index 72e17ba5b98..7ded92b79a7 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/TowerLevelHandler.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/TowerLevelHandler.kt @@ -201,34 +201,43 @@ internal class LevelHandler( val explicitReceiver = ExpressionReceiverValue(invokeReceiverExpression) callResolutionContext.invokeOnGivenReceiverCandidateFactory = CandidateFactory(components, invokeFunctionInfo) - when { - invokeBuiltinExtensionMode -> { - enqueueResolverTask { - towerResolverSession.runResolverForBuiltinInvokeExtensionWithExplicitArgument( - invokeFunctionInfo, explicitReceiver - ) - } - } - useImplicitReceiverAsBuiltinInvokeArgument -> { - enqueueResolverTask { - towerResolverSession.runResolverForBuiltinInvokeExtensionWithImplicitArgument( - invokeFunctionInfo, explicitReceiver - ) - } - enqueueResolverTask { - towerResolverSession.runResolverForInvoke( - invokeFunctionInfo, explicitReceiver - ) - } - } - else -> { - enqueueResolverTask { - towerResolverSession.runResolverForInvoke( - invokeFunctionInfo, explicitReceiver - ) - } - } + enqueueResolverTasksForInvoke( + invokeFunctionInfo, + explicitReceiver, + invokeBuiltinExtensionMode, + useImplicitReceiverAsBuiltinInvokeArgument + ) + } + } + + private fun enqueueResolverTasksForInvoke( + invokeFunctionInfo: CallInfo, + explicitReceiver: ExpressionReceiverValue, + invokeBuiltinExtensionMode: Boolean, + useImplicitReceiverAsBuiltinInvokeArgument: Boolean + ) { + if (invokeBuiltinExtensionMode) { + enqueueResolverTask { + towerResolverSession.runResolverForBuiltinInvokeExtensionWithExplicitArgument( + invokeFunctionInfo, explicitReceiver + ) } + + return + } + + if (useImplicitReceiverAsBuiltinInvokeArgument) { + enqueueResolverTask { + towerResolverSession.runResolverForBuiltinInvokeExtensionWithImplicitArgument( + invokeFunctionInfo, explicitReceiver + ) + } + } + + enqueueResolverTask { + towerResolverSession.runResolverForInvoke( + invokeFunctionInfo, explicitReceiver + ) } } }