FIR: Extract AbstractFirBasedSymbol::ensureResolved extension
This commit is contained in:
+16
-5
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.fir.resolve.transformers
|
package org.jetbrains.kotlin.fir.resolve.transformers
|
||||||
|
|
||||||
|
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.FirResolvePhase
|
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||||
@@ -13,12 +14,22 @@ import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
|||||||
fun <D> AbstractFirBasedSymbol<D>.phasedFir(
|
fun <D> AbstractFirBasedSymbol<D>.phasedFir(
|
||||||
requiredPhase: FirResolvePhase = FirResolvePhase.DECLARATIONS
|
requiredPhase: FirResolvePhase = FirResolvePhase.DECLARATIONS
|
||||||
): D where D : FirDeclaration, D : FirSymbolOwner<D> {
|
): D where D : FirDeclaration, D : FirSymbolOwner<D> {
|
||||||
val result = this.fir
|
|
||||||
val resolver = fir.session.phaseManager
|
|
||||||
?: error("phasedFirFileResolver should be defined when working with FIR in phased mode")
|
|
||||||
|
|
||||||
resolver.ensureResolved(this, requiredPhase)
|
ensureResolved(requiredPhase, fir.session)
|
||||||
|
|
||||||
return result
|
return fir
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun <D> AbstractFirBasedSymbol<D>.ensureResolved(
|
||||||
|
requiredPhase: FirResolvePhase,
|
||||||
|
// TODO: Currently, the parameter is unused but it's needed to guarantee that all call-sites are able to supply use-site session
|
||||||
|
// TODO: Decide which one session should be used and probably get rid of the parameter if use-site session is not needed
|
||||||
|
useSiteSession: FirSession,
|
||||||
|
) where D : FirDeclaration, D : FirSymbolOwner<D> {
|
||||||
|
val availablePhase = fir.resolvePhase
|
||||||
|
if (availablePhase >= requiredPhase) return
|
||||||
|
val resolver = fir.session.phaseManager
|
||||||
|
?: error("phaseManager should be defined when working with FIR in phased mode")
|
||||||
|
|
||||||
|
resolver.ensureResolved(this, requiredPhase)
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user