diff --git a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/tower/ScopeTowerProcessors.kt b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/tower/ScopeTowerProcessors.kt index 62f80e8352a..74dd890406a 100644 --- a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/tower/ScopeTowerProcessors.kt +++ b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/tower/ScopeTowerProcessors.kt @@ -63,7 +63,12 @@ interface SimpleScopeTowerProcessor : ScopeTowerProcessor { internal abstract class AbstractSimpleScopeTowerProcessor( val candidateFactory: CandidateFactory ) : SimpleScopeTowerProcessor { - fun resolve(collector: Collection, f:(Boolean)->Boolean, kind: ExplicitReceiverKind, receiver: ReceiverValueWithSmartCastInfo?) : Collection { + fun createCandidates( + collector: Collection, + f:(Boolean)->Boolean, + kind: ExplicitReceiverKind, + receiver: ReceiverValueWithSmartCastInfo? + ) : Collection { val result = mutableListOf() for (candidate in collector) { if (f(candidate.requiresExtensionReceiver)) { @@ -91,16 +96,18 @@ internal class ExplicitReceiverScopeTowerProcessor( ) : AbstractSimpleScopeTowerProcessor(context) { override fun simpleProcess(data: TowerData): Collection { return when (data) { - TowerData.Empty -> resolve( + TowerData.Empty -> createCandidates( MemberScopeTowerLevel(scopeTower, explicitReceiver).collectCandidates(null), { !it }, ExplicitReceiverKind.DISPATCH_RECEIVER, - null) - is TowerData.TowerLevel -> resolve( + null + ) + is TowerData.TowerLevel -> createCandidates( data.level.collectCandidates(explicitReceiver), { it }, ExplicitReceiverKind.EXTENSION_RECEIVER, - explicitReceiver) + explicitReceiver + ) else -> emptyList() } } @@ -123,7 +130,7 @@ private class QualifierScopeTowerProcessor( override fun simpleProcess(data: TowerData): Collection { if (data != TowerData.Empty) return emptyList() - return resolve( + return createCandidates( QualifierScopeTowerLevel(scopeTower, qualifier).collectCandidates(null), { !it }, ExplicitReceiverKind.NO_EXPLICIT_RECEIVER, @@ -140,16 +147,18 @@ private class NoExplicitReceiverScopeTowerProcessor( val collectCandidates: CandidatesCollector ) : AbstractSimpleScopeTowerProcessor(context) { override fun simpleProcess(data: TowerData): Collection = when (data) { - is TowerData.TowerLevel -> resolve( + is TowerData.TowerLevel -> createCandidates( data.level.collectCandidates(null), { !it }, ExplicitReceiverKind.NO_EXPLICIT_RECEIVER, - null) - is TowerData.BothTowerLevelAndImplicitReceiver -> resolve( + null + ) + is TowerData.BothTowerLevelAndImplicitReceiver -> createCandidates( data.level.collectCandidates(data.implicitReceiver), { it }, ExplicitReceiverKind.NO_EXPLICIT_RECEIVER, - data.implicitReceiver) + data.implicitReceiver + ) else -> emptyList() }