[FIR] make FirLazyDeclarationResolver FirElementWithResolveState-based

This is required to be able to call lazy resolve for FirFileAnnotationsContainer

^KT-63042
This commit is contained in:
Dmitrii Gridin
2023-11-20 17:00:35 +01:00
committed by Space Team
parent d7710b8e8d
commit 0b07b86ec9
6 changed files with 37 additions and 51 deletions
@@ -5,16 +5,16 @@
package org.jetbrains.kotlin.fir.resolve.transformers
import org.jetbrains.kotlin.fir.FirElementWithResolveState
import org.jetbrains.kotlin.fir.declarations.FirClass
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
import org.jetbrains.kotlin.fir.symbols.FirLazyDeclarationResolver
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
object FirDummyCompilerLazyDeclarationResolver : FirLazyDeclarationResolver() {
override fun startResolvingPhase(phase: FirResolvePhase) {}
override fun finishResolvingPhase(phase: FirResolvePhase) {}
override fun lazyResolveToPhase(symbol: FirBasedSymbol<*>, toPhase: FirResolvePhase) {}
override fun lazyResolveToPhaseWithCallableMembers(symbol: FirClassSymbol<*>, toPhase: FirResolvePhase) {}
override fun lazyResolveToPhaseRecursively(symbol: FirBasedSymbol<*>, toPhase: FirResolvePhase) {}
override fun lazyResolveToPhase(element: FirElementWithResolveState, toPhase: FirResolvePhase) {}
override fun lazyResolveToPhaseWithCallableMembers(clazz: FirClass, toPhase: FirResolvePhase) {}
override fun lazyResolveToPhaseRecursively(element: FirElementWithResolveState, toPhase: FirResolvePhase) {}
}
@@ -5,10 +5,10 @@
package org.jetbrains.kotlin.fir.symbols
import org.jetbrains.kotlin.fir.FirElementWithResolveState
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.FirSessionComponent
import org.jetbrains.kotlin.fir.declarations.FirClass
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
@@ -43,17 +43,17 @@ abstract class FirLazyDeclarationResolver : FirSessionComponent {
/**
* @see org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
*/
abstract fun lazyResolveToPhase(symbol: FirBasedSymbol<*>, toPhase: FirResolvePhase)
abstract fun lazyResolveToPhase(element: FirElementWithResolveState, toPhase: FirResolvePhase)
/**
* @see org.jetbrains.kotlin.fir.symbols.lazyResolveToPhaseWithCallableMembers
*/
abstract fun lazyResolveToPhaseWithCallableMembers(symbol: FirClassSymbol<*>, toPhase: FirResolvePhase)
abstract fun lazyResolveToPhaseWithCallableMembers(clazz: FirClass, toPhase: FirResolvePhase)
/**
* @see org.jetbrains.kotlin.fir.symbols.lazyResolveToPhaseRecursively
*/
abstract fun lazyResolveToPhaseRecursively(symbol: FirBasedSymbol<*>, toPhase: FirResolvePhase)
abstract fun lazyResolveToPhaseRecursively(element: FirElementWithResolveState, toPhase: FirResolvePhase)
}
class FirLazyResolveContractViolationException(
@@ -69,7 +69,7 @@ class FirLazyResolveContractViolationException(
val FirSession.lazyDeclarationResolver: FirLazyDeclarationResolver by FirSession.sessionComponentAccessor()
private val FirDeclaration.lazyDeclarationResolver get() = moduleData.session.lazyDeclarationResolver
private val FirElementWithResolveState.lazyDeclarationResolver get() = moduleData.session.lazyDeclarationResolver
/**
* Lazy resolve [FirBasedSymbol] to [FirResolvePhase].
@@ -86,16 +86,16 @@ private val FirDeclaration.lazyDeclarationResolver get() = moduleData.session.la
* @param toPhase the minimum phase, the declaration should be resolved to after an execution of the [lazyResolveToPhase]
*/
fun FirBasedSymbol<*>.lazyResolveToPhase(toPhase: FirResolvePhase) {
fir.lazyDeclarationResolver.lazyResolveToPhase(this, toPhase)
fir.lazyResolveToPhase(toPhase)
}
/**
* Lazy resolve [FirDeclaration] to [FirResolvePhase].
* Lazy resolve [FirElementWithResolveState] to [FirResolvePhase].
*
* @see lazyResolveToPhase
*/
fun FirDeclaration.lazyResolveToPhase(toPhase: FirResolvePhase) {
symbol.lazyResolveToPhase(toPhase)
fun FirElementWithResolveState.lazyResolveToPhase(toPhase: FirResolvePhase) {
lazyDeclarationResolver.lazyResolveToPhase(this, toPhase)
}
/**
@@ -117,7 +117,7 @@ fun FirDeclaration.lazyResolveToPhase(toPhase: FirResolvePhase) {
* @see lazyResolveToPhase
*/
fun FirClassSymbol<*>.lazyResolveToPhaseWithCallableMembers(toPhase: FirResolvePhase) {
fir.lazyDeclarationResolver.lazyResolveToPhaseWithCallableMembers(this, toPhase)
fir.lazyResolveToPhaseWithCallableMembers(toPhase)
}
/**
@@ -126,7 +126,7 @@ fun FirClassSymbol<*>.lazyResolveToPhaseWithCallableMembers(toPhase: FirResolveP
* @see lazyResolveToPhaseWithCallableMembers
*/
fun FirClass.lazyResolveToPhaseWithCallableMembers(toPhase: FirResolvePhase) {
symbol.lazyResolveToPhaseWithCallableMembers(toPhase)
lazyDeclarationResolver.lazyResolveToPhaseWithCallableMembers(this, toPhase)
}
/**
@@ -145,14 +145,14 @@ fun FirClass.lazyResolveToPhaseWithCallableMembers(toPhase: FirResolvePhase) {
* @param toPhase the minimum phase, the declaration and all nested declarations should be resolved to after an execution of the [lazyResolveToPhase]
*/
fun FirBasedSymbol<*>.lazyResolveToPhaseRecursively(toPhase: FirResolvePhase) {
fir.lazyDeclarationResolver.lazyResolveToPhaseRecursively(this, toPhase)
fir.lazyResolveToPhaseRecursively(toPhase)
}
/**
* Lazy resolve [FirDeclaration] and all nested declarations to [FirResolvePhase].
* Lazy resolve [FirElementWithResolveState] and all nested declarations to [FirResolvePhase].
*
* @see lazyResolveToPhaseRecursively
*/
fun FirDeclaration.lazyResolveToPhaseRecursively(toPhase: FirResolvePhase) {
symbol.lazyResolveToPhaseRecursively(toPhase)
fun FirElementWithResolveState.lazyResolveToPhaseRecursively(toPhase: FirResolvePhase) {
lazyDeclarationResolver.lazyResolveToPhaseRecursively(this, toPhase)
}