FIR: Simplify super-qualified calls resolution
This commit is contained in:
+5
-15
@@ -7,13 +7,11 @@ package org.jetbrains.kotlin.fir.resolve.calls.tower
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.fir.asReversedFrozen
|
import org.jetbrains.kotlin.fir.asReversedFrozen
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccessExpression
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirResolvedQualifier
|
import org.jetbrains.kotlin.fir.expressions.FirResolvedQualifier
|
||||||
import org.jetbrains.kotlin.fir.resolve.BodyResolveComponents
|
import org.jetbrains.kotlin.fir.resolve.BodyResolveComponents
|
||||||
import org.jetbrains.kotlin.fir.resolve.FirTowerDataContext
|
import org.jetbrains.kotlin.fir.resolve.FirTowerDataContext
|
||||||
import org.jetbrains.kotlin.fir.resolve.calls.*
|
import org.jetbrains.kotlin.fir.resolve.calls.*
|
||||||
import org.jetbrains.kotlin.fir.resolve.scope
|
|
||||||
import org.jetbrains.kotlin.fir.scopes.FakeOverrideTypeCalculator
|
|
||||||
import org.jetbrains.kotlin.fir.scopes.FirCompositeScope
|
|
||||||
import org.jetbrains.kotlin.fir.scopes.FirScope
|
import org.jetbrains.kotlin.fir.scopes.FirScope
|
||||||
import org.jetbrains.kotlin.fir.scopes.ProcessorAction
|
import org.jetbrains.kotlin.fir.scopes.ProcessorAction
|
||||||
import org.jetbrains.kotlin.fir.types.*
|
import org.jetbrains.kotlin.fir.types.*
|
||||||
@@ -284,20 +282,12 @@ internal open class FirTowerResolveTask(
|
|||||||
|
|
||||||
suspend fun runResolverForSuperReceiver(
|
suspend fun runResolverForSuperReceiver(
|
||||||
info: CallInfo,
|
info: CallInfo,
|
||||||
superTypeRef: FirTypeRef
|
superCall: FirQualifiedAccessExpression,
|
||||||
) {
|
) {
|
||||||
val scope = when (superTypeRef) {
|
val receiverValue = ExpressionReceiverValue(superCall)
|
||||||
is FirResolvedTypeRef -> superTypeRef.type.scope(session, components.scopeSession, FakeOverrideTypeCalculator.DoNothing)
|
|
||||||
is FirComposedSuperTypeRef -> FirCompositeScope(
|
|
||||||
superTypeRef.superTypeRefs.mapNotNull {
|
|
||||||
it.type.scope(session, components.scopeSession, FakeOverrideTypeCalculator.DoNothing)
|
|
||||||
}
|
|
||||||
)
|
|
||||||
else -> null
|
|
||||||
} ?: return
|
|
||||||
processLevel(
|
processLevel(
|
||||||
scope.toScopeTowerLevel(),
|
receiverValue.toMemberScopeTowerLevel(),
|
||||||
info, TowerGroup.Member, explicitReceiverKind = ExplicitReceiverKind.DISPATCH_RECEIVER
|
info, TowerGroup.Member, explicitReceiverKind = ExplicitReceiverKind.DISPATCH_RECEIVER,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user