FIR: Extract processScopeForExplicitReceiver
This commit is contained in:
+30
-15
@@ -334,16 +334,15 @@ class FirTowerResolver(
|
|||||||
|
|
||||||
val nonEmptyLocalScopes = mutableListOf<FirLocalScope>()
|
val nonEmptyLocalScopes = mutableListOf<FirLocalScope>()
|
||||||
for ((index, localScope) in localScopes.withIndex()) {
|
for ((index, localScope) in localScopes.withIndex()) {
|
||||||
val result = manager.processLevel(
|
if (manager.processScopeForExplicitReceiver(
|
||||||
localScope.toScopeTowerLevel(extensionReceiver = explicitReceiverValue),
|
localScope,
|
||||||
info, TowerGroup.Local(index), ExplicitReceiverKind.EXTENSION_RECEIVER
|
explicitReceiverValue,
|
||||||
)
|
info,
|
||||||
if (result != ProcessorAction.NONE) {
|
TowerGroup.Local(index)
|
||||||
|
) != ProcessorAction.NONE
|
||||||
|
) {
|
||||||
nonEmptyLocalScopes += localScope
|
nonEmptyLocalScopes += localScope
|
||||||
}
|
}
|
||||||
manager.processLevelForPropertyWithInvoke(
|
|
||||||
localScope.toScopeTowerLevel(), info, TowerGroup.Local(index)
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for ((implicitReceiverValue, usableAsValue, depth) in implicitReceivers) {
|
for ((implicitReceiverValue, usableAsValue, depth) in implicitReceivers) {
|
||||||
@@ -352,17 +351,33 @@ class FirTowerResolver(
|
|||||||
}
|
}
|
||||||
|
|
||||||
for ((index, topLevelScope) in topLevelScopes.withIndex()) {
|
for ((index, topLevelScope) in topLevelScopes.withIndex()) {
|
||||||
manager.processLevel(
|
manager.processScopeForExplicitReceiver(
|
||||||
topLevelScope.toScopeTowerLevel(extensionReceiver = explicitReceiverValue),
|
topLevelScope,
|
||||||
info, TowerGroup.Top(index), ExplicitReceiverKind.EXTENSION_RECEIVER
|
explicitReceiverValue,
|
||||||
)
|
info,
|
||||||
|
TowerGroup.Top(index)
|
||||||
manager.processLevelForPropertyWithInvoke(
|
|
||||||
topLevelScope.toScopeTowerLevel(), info, TowerGroup.Top(index)
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private suspend fun TowerResolveManager.processScopeForExplicitReceiver(
|
||||||
|
scope: FirScope,
|
||||||
|
explicitReceiverValue: ExpressionReceiverValue,
|
||||||
|
info: CallInfo,
|
||||||
|
towerGroup: TowerGroup,
|
||||||
|
): ProcessorAction {
|
||||||
|
val result = processLevel(
|
||||||
|
scope.toScopeTowerLevel(extensionReceiver = explicitReceiverValue),
|
||||||
|
info, towerGroup, ExplicitReceiverKind.EXTENSION_RECEIVER
|
||||||
|
)
|
||||||
|
|
||||||
|
processLevelForPropertyWithInvoke(
|
||||||
|
scope.toScopeTowerLevel(), info, towerGroup
|
||||||
|
)
|
||||||
|
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|
||||||
private suspend fun TowerResolveManager.processMembersForExplicitReceiver(
|
private suspend fun TowerResolveManager.processMembersForExplicitReceiver(
|
||||||
explicitReceiverValue: ExpressionReceiverValue,
|
explicitReceiverValue: ExpressionReceiverValue,
|
||||||
info: CallInfo
|
info: CallInfo
|
||||||
|
|||||||
Reference in New Issue
Block a user