diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/tower/TowerLevelHandler.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/tower/TowerLevelHandler.kt index 85ef574d4d2..50722b4e52f 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/tower/TowerLevelHandler.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/tower/TowerLevelHandler.kt @@ -5,11 +5,10 @@ package org.jetbrains.kotlin.fir.resolve.calls.tower -import org.jetbrains.kotlin.fir.declarations.FirResolvePhase import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.expressions.FirResolvedQualifier import org.jetbrains.kotlin.fir.resolve.calls.* -import org.jetbrains.kotlin.fir.resolve.transformers.ensureResolved +import org.jetbrains.kotlin.fir.resolve.transformers.ensureResolvedForCalls import org.jetbrains.kotlin.fir.scopes.ProcessorAction import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol @@ -150,7 +149,7 @@ private class TowerScopeLevelProcessor( implicitExtensionReceiverValue: ImplicitReceiverValue<*>?, builtInExtensionFunctionReceiverValue: ReceiverValue? ) { - symbol.ensureResolved(FirResolvePhase.CONTRACTS, candidateFactory.bodyResolveComponents.session) + symbol.ensureResolvedForCalls(candidateFactory.bodyResolveComponents.session) // Check explicit extension receiver for default package members if (symbol is FirNamedFunctionSymbol && dispatchReceiverValue == null && (implicitExtensionReceiverValue == null) != (explicitReceiver == null) && diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/PhaseUtils.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/PhaseUtils.kt index 38ab45f9ee4..bff6942f4c9 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/PhaseUtils.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/PhaseUtils.kt @@ -8,6 +8,8 @@ package org.jetbrains.kotlin.fir.resolve.transformers import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.FirSymbolOwner import org.jetbrains.kotlin.fir.declarations.FirDeclaration +import org.jetbrains.kotlin.fir.declarations.FirFunction +import org.jetbrains.kotlin.fir.declarations.FirProperty import org.jetbrains.kotlin.fir.declarations.FirResolvePhase import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol @@ -33,3 +35,14 @@ fun AbstractFirBasedSymbol.ensureResolved( resolver.ensureResolved(this, requiredPhase) } + +fun AbstractFirBasedSymbol.ensureResolvedForCalls( + useSiteSession: FirSession, +) where D : FirDeclaration, D : FirSymbolOwner { + val requiredPhase = when (this.fir) { + is FirFunction<*>, is FirProperty -> FirResolvePhase.CONTRACTS + else -> FirResolvePhase.STATUS + } + + ensureResolved(requiredPhase, useSiteSession) +}