FIR: Rename CallResolutionContext -> CandidateFactoriesAndCollectors
This commit is contained in:
@@ -20,19 +20,19 @@ class FirTowerResolver(
|
||||
collector: CandidateCollector = this.collector,
|
||||
manager: TowerResolveManager = this.manager
|
||||
): CandidateCollector {
|
||||
val callResolutionContext = buildCallResolutionContext(info, collector)
|
||||
val candidateFactoriesAndCollectors = buildCandidateFactoriesAndCollectors(info, collector)
|
||||
|
||||
val towerResolverSession = FirTowerResolverSession(components, implicitReceiverValues, manager, callResolutionContext)
|
||||
val towerResolverSession = FirTowerResolverSession(components, implicitReceiverValues, manager, candidateFactoriesAndCollectors)
|
||||
towerResolverSession.runResolution(info)
|
||||
|
||||
manager.runTasks()
|
||||
return collector
|
||||
}
|
||||
|
||||
private fun buildCallResolutionContext(
|
||||
private fun buildCandidateFactoriesAndCollectors(
|
||||
info: CallInfo,
|
||||
collector: CandidateCollector
|
||||
): CallResolutionContext {
|
||||
): CandidateFactoriesAndCollectors {
|
||||
val candidateFactory = CandidateFactory(components, info)
|
||||
val stubReceiverCandidateFactory =
|
||||
if (info.callKind == CallKind.CallableReference && info.stubReceiver != null)
|
||||
@@ -53,13 +53,13 @@ class FirTowerResolver(
|
||||
}
|
||||
}
|
||||
|
||||
return CallResolutionContext(
|
||||
return CandidateFactoriesAndCollectors(
|
||||
candidateFactory,
|
||||
collector,
|
||||
invokeReceiverCandidateFactory,
|
||||
invokeBuiltinExtensionReceiverCandidateFactory,
|
||||
stubReceiverCandidateFactory,
|
||||
invokeReceiverCollector
|
||||
invokeReceiverCandidateFactory,
|
||||
invokeReceiverCollector,
|
||||
invokeBuiltinExtensionReceiverCandidateFactory
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
+7
-4
@@ -38,7 +38,7 @@ class FirTowerResolverSession internal constructor(
|
||||
val components: BodyResolveComponents,
|
||||
implicitReceiverValues: List<ImplicitReceiverValue<*>>,
|
||||
private val manager: TowerResolveManager,
|
||||
private val callResolutionContext: CallResolutionContext,
|
||||
private val candidateFactoriesAndCollectors: CandidateFactoriesAndCollectors,
|
||||
) {
|
||||
private data class ImplicitReceiver(
|
||||
val receiver: ImplicitReceiverValue<*>,
|
||||
@@ -94,7 +94,10 @@ class FirTowerResolverSession internal constructor(
|
||||
LevelHandler(
|
||||
)
|
||||
|
||||
return levelHandler.handleLevel(callInfo, explicitReceiverKind, group, callResolutionContext, towerLevel, invokeResolveMode) {
|
||||
return levelHandler.handleLevel(
|
||||
callInfo, explicitReceiverKind, group,
|
||||
candidateFactoriesAndCollectors, towerLevel, invokeResolveMode
|
||||
) {
|
||||
enqueueResolverTasksForInvokeReceiverCandidates(
|
||||
invokeResolveMode, callInfo
|
||||
)
|
||||
@@ -549,7 +552,7 @@ class FirTowerResolverSession internal constructor(
|
||||
) {
|
||||
val invokeBuiltinExtensionMode = invokeResolveMode == InvokeResolveMode.RECEIVER_FOR_INVOKE_BUILTIN_EXTENSION
|
||||
|
||||
for (invokeReceiverCandidate in callResolutionContext.invokeReceiverCollector!!.bestCandidates()) {
|
||||
for (invokeReceiverCandidate in candidateFactoriesAndCollectors.invokeReceiverCollector!!.bestCandidates()) {
|
||||
val symbol = invokeReceiverCandidate.symbol
|
||||
if (symbol !is FirCallableSymbol<*> && symbol !is FirRegularClassSymbol) continue
|
||||
|
||||
@@ -584,7 +587,7 @@ class FirTowerResolverSession internal constructor(
|
||||
}
|
||||
|
||||
val explicitReceiver = ExpressionReceiverValue(invokeReceiverExpression)
|
||||
callResolutionContext.invokeOnGivenReceiverCandidateFactory = CandidateFactory(components, invokeFunctionInfo)
|
||||
candidateFactoriesAndCollectors.invokeOnGivenReceiverCandidateFactory = CandidateFactory(components, invokeFunctionInfo)
|
||||
enqueueResolverTasksForInvoke(
|
||||
invokeFunctionInfo,
|
||||
explicitReceiver,
|
||||
|
||||
+14
-14
@@ -17,13 +17,13 @@ import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.resolve.calls.tasks.ExplicitReceiverKind
|
||||
import org.jetbrains.kotlin.types.AbstractTypeChecker
|
||||
|
||||
internal class CallResolutionContext(
|
||||
internal class CandidateFactoriesAndCollectors(
|
||||
val candidateFactory: CandidateFactory,
|
||||
val resultCollector: CandidateCollector,
|
||||
val invokeReceiverCandidateFactory: CandidateFactory?,
|
||||
val invokeBuiltinExtensionReceiverCandidateFactory: CandidateFactory?,
|
||||
val stubReceiverCandidateFactory: CandidateFactory?,
|
||||
val invokeReceiverCollector: CandidateCollector?
|
||||
val invokeReceiverCandidateFactory: CandidateFactory?,
|
||||
val invokeReceiverCollector: CandidateCollector?,
|
||||
val invokeBuiltinExtensionReceiverCandidateFactory: CandidateFactory?
|
||||
) {
|
||||
// TODO: Get rid of the property, storing state here looks like a hack
|
||||
internal lateinit var invokeOnGivenReceiverCandidateFactory: CandidateFactory
|
||||
@@ -40,12 +40,12 @@ internal class LevelHandler {
|
||||
info: CallInfo,
|
||||
explicitReceiverKind: ExplicitReceiverKind,
|
||||
group: TowerGroup,
|
||||
callResolutionContext: CallResolutionContext,
|
||||
candidateFactoriesAndCollectors: CandidateFactoriesAndCollectors,
|
||||
towerLevel: SessionBasedTowerLevel,
|
||||
invokeResolveMode: InvokeResolveMode?,
|
||||
enqueueResolverTasksForInvokeReceiverCandidates: EnqueueTasksForInvokeReceiverCandidates
|
||||
): ProcessorAction {
|
||||
val resultCollector = callResolutionContext.resultCollector
|
||||
val resultCollector = candidateFactoriesAndCollectors.resultCollector
|
||||
val processor =
|
||||
TowerScopeLevelProcessor(
|
||||
info.explicitReceiver,
|
||||
@@ -53,9 +53,9 @@ internal class LevelHandler {
|
||||
resultCollector,
|
||||
// TODO: performance?
|
||||
if (invokeResolveMode == InvokeResolveMode.IMPLICIT_CALL_ON_GIVEN_RECEIVER)
|
||||
callResolutionContext.invokeOnGivenReceiverCandidateFactory
|
||||
candidateFactoriesAndCollectors.invokeOnGivenReceiverCandidateFactory
|
||||
else
|
||||
callResolutionContext.candidateFactory,
|
||||
candidateFactoriesAndCollectors.candidateFactory,
|
||||
group
|
||||
)
|
||||
when (info.callKind) {
|
||||
@@ -83,16 +83,16 @@ internal class LevelHandler {
|
||||
val invokeReceiverProcessor = TowerScopeLevelProcessor(
|
||||
info.explicitReceiver,
|
||||
explicitReceiverKind,
|
||||
callResolutionContext.invokeReceiverCollector!!,
|
||||
if (invokeBuiltinExtensionMode) callResolutionContext.invokeBuiltinExtensionReceiverCandidateFactory!!
|
||||
else callResolutionContext.invokeReceiverCandidateFactory!!,
|
||||
candidateFactoriesAndCollectors.invokeReceiverCollector!!,
|
||||
if (invokeBuiltinExtensionMode) candidateFactoriesAndCollectors.invokeBuiltinExtensionReceiverCandidateFactory!!
|
||||
else candidateFactoriesAndCollectors.invokeReceiverCandidateFactory!!,
|
||||
group
|
||||
)
|
||||
callResolutionContext.invokeReceiverCollector.newDataSet()
|
||||
candidateFactoriesAndCollectors.invokeReceiverCollector.newDataSet()
|
||||
towerLevel.processProperties(info.name, invokeReceiverProcessor)
|
||||
towerLevel.processObjectsAsVariables(info.name, invokeReceiverProcessor)
|
||||
|
||||
if (callResolutionContext.invokeReceiverCollector.isSuccess()) {
|
||||
if (candidateFactoriesAndCollectors.invokeReceiverCollector.isSuccess()) {
|
||||
enqueueResolverTasksForInvokeReceiverCandidates()
|
||||
}
|
||||
}
|
||||
@@ -108,7 +108,7 @@ internal class LevelHandler {
|
||||
ExplicitReceiverKind.EXTENSION_RECEIVER
|
||||
},
|
||||
resultCollector,
|
||||
callResolutionContext.stubReceiverCandidateFactory!!, group
|
||||
candidateFactoriesAndCollectors.stubReceiverCandidateFactory!!, group
|
||||
)
|
||||
val towerLevelWithStubReceiver = towerLevel.replaceReceiverValue(stubReceiverValue)
|
||||
towerLevelWithStubReceiver.processFunctionsAndProperties(info.name, stubProcessor)
|
||||
|
||||
Reference in New Issue
Block a user