FIR: Extract function in TowerLevelHandler
This commit is contained in:
+36
-27
@@ -201,34 +201,43 @@ internal class LevelHandler(
|
|||||||
|
|
||||||
val explicitReceiver = ExpressionReceiverValue(invokeReceiverExpression)
|
val explicitReceiver = ExpressionReceiverValue(invokeReceiverExpression)
|
||||||
callResolutionContext.invokeOnGivenReceiverCandidateFactory = CandidateFactory(components, invokeFunctionInfo)
|
callResolutionContext.invokeOnGivenReceiverCandidateFactory = CandidateFactory(components, invokeFunctionInfo)
|
||||||
when {
|
enqueueResolverTasksForInvoke(
|
||||||
invokeBuiltinExtensionMode -> {
|
invokeFunctionInfo,
|
||||||
enqueueResolverTask {
|
explicitReceiver,
|
||||||
towerResolverSession.runResolverForBuiltinInvokeExtensionWithExplicitArgument(
|
invokeBuiltinExtensionMode,
|
||||||
invokeFunctionInfo, explicitReceiver
|
useImplicitReceiverAsBuiltinInvokeArgument
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
useImplicitReceiverAsBuiltinInvokeArgument -> {
|
|
||||||
enqueueResolverTask {
|
private fun enqueueResolverTasksForInvoke(
|
||||||
towerResolverSession.runResolverForBuiltinInvokeExtensionWithImplicitArgument(
|
invokeFunctionInfo: CallInfo,
|
||||||
invokeFunctionInfo, explicitReceiver
|
explicitReceiver: ExpressionReceiverValue,
|
||||||
)
|
invokeBuiltinExtensionMode: Boolean,
|
||||||
}
|
useImplicitReceiverAsBuiltinInvokeArgument: Boolean
|
||||||
enqueueResolverTask {
|
) {
|
||||||
towerResolverSession.runResolverForInvoke(
|
if (invokeBuiltinExtensionMode) {
|
||||||
invokeFunctionInfo, explicitReceiver
|
enqueueResolverTask {
|
||||||
)
|
towerResolverSession.runResolverForBuiltinInvokeExtensionWithExplicitArgument(
|
||||||
}
|
invokeFunctionInfo, explicitReceiver
|
||||||
}
|
)
|
||||||
else -> {
|
|
||||||
enqueueResolverTask {
|
|
||||||
towerResolverSession.runResolverForInvoke(
|
|
||||||
invokeFunctionInfo, explicitReceiver
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (useImplicitReceiverAsBuiltinInvokeArgument) {
|
||||||
|
enqueueResolverTask {
|
||||||
|
towerResolverSession.runResolverForBuiltinInvokeExtensionWithImplicitArgument(
|
||||||
|
invokeFunctionInfo, explicitReceiver
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
enqueueResolverTask {
|
||||||
|
towerResolverSession.runResolverForInvoke(
|
||||||
|
invokeFunctionInfo, explicitReceiver
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user