FIR: Fix phase requirement for call resolution
This commit is contained in:
+2
-3
@@ -5,11 +5,10 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.fir.resolve.calls.tower
|
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.FirExpression
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirResolvedQualifier
|
import org.jetbrains.kotlin.fir.expressions.FirResolvedQualifier
|
||||||
import org.jetbrains.kotlin.fir.resolve.calls.*
|
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.scopes.ProcessorAction
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||||
@@ -150,7 +149,7 @@ private class TowerScopeLevelProcessor(
|
|||||||
implicitExtensionReceiverValue: ImplicitReceiverValue<*>?,
|
implicitExtensionReceiverValue: ImplicitReceiverValue<*>?,
|
||||||
builtInExtensionFunctionReceiverValue: ReceiverValue?
|
builtInExtensionFunctionReceiverValue: ReceiverValue?
|
||||||
) {
|
) {
|
||||||
symbol.ensureResolved(FirResolvePhase.CONTRACTS, candidateFactory.bodyResolveComponents.session)
|
symbol.ensureResolvedForCalls(candidateFactory.bodyResolveComponents.session)
|
||||||
// Check explicit extension receiver for default package members
|
// Check explicit extension receiver for default package members
|
||||||
if (symbol is FirNamedFunctionSymbol && dispatchReceiverValue == null &&
|
if (symbol is FirNamedFunctionSymbol && dispatchReceiverValue == null &&
|
||||||
(implicitExtensionReceiverValue == null) != (explicitReceiver == null) &&
|
(implicitExtensionReceiverValue == null) != (explicitReceiver == null) &&
|
||||||
|
|||||||
@@ -8,6 +8,8 @@ package org.jetbrains.kotlin.fir.resolve.transformers
|
|||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.FirSymbolOwner
|
import org.jetbrains.kotlin.fir.FirSymbolOwner
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
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.declarations.FirResolvePhase
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
||||||
|
|
||||||
@@ -33,3 +35,14 @@ fun <D> AbstractFirBasedSymbol<D>.ensureResolved(
|
|||||||
|
|
||||||
resolver.ensureResolved(this, requiredPhase)
|
resolver.ensureResolved(this, requiredPhase)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun <D> AbstractFirBasedSymbol<D>.ensureResolvedForCalls(
|
||||||
|
useSiteSession: FirSession,
|
||||||
|
) where D : FirDeclaration, D : FirSymbolOwner<D> {
|
||||||
|
val requiredPhase = when (this.fir) {
|
||||||
|
is FirFunction<*>, is FirProperty -> FirResolvePhase.CONTRACTS
|
||||||
|
else -> FirResolvePhase.STATUS
|
||||||
|
}
|
||||||
|
|
||||||
|
ensureResolved(requiredPhase, useSiteSession)
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user