Rename: FirResolveState -> FirModuleResolveState to reflect per-module status
This commit is contained in:
@@ -12,7 +12,7 @@ import org.jetbrains.kotlin.fir.resolve.diagnostics.collectors.AbstractDiagnosti
|
||||
import org.jetbrains.kotlin.fir.resolve.diagnostics.collectors.registerAllComponents
|
||||
import org.jetbrains.kotlin.psi.KtElement
|
||||
|
||||
class FirIdeDiagnosticsCollector(private val resolveState: FirResolveState) : AbstractDiagnosticCollector() {
|
||||
class FirIdeDiagnosticsCollector(private val resolveState: FirModuleResolveState) : AbstractDiagnosticCollector() {
|
||||
|
||||
init {
|
||||
registerAllComponents()
|
||||
|
||||
@@ -21,10 +21,10 @@ interface FirIdeResolveStateService {
|
||||
|
||||
val fallbackModificationTracker: ModificationTracker?
|
||||
|
||||
fun getResolveState(moduleInfo: IdeaModuleInfo): FirResolveState
|
||||
fun getResolveState(moduleInfo: IdeaModuleInfo): FirModuleResolveState
|
||||
}
|
||||
|
||||
private class FirModuleData(val state: FirResolveState, val modificationTracker: ModificationTracker?) {
|
||||
private class FirModuleData(val state: FirModuleResolveState, val modificationTracker: ModificationTracker?) {
|
||||
val modificationCount: Long = modificationTracker?.modificationCount ?: Long.MIN_VALUE
|
||||
|
||||
fun isOutOfDate(): Boolean {
|
||||
@@ -36,9 +36,9 @@ private class FirModuleData(val state: FirResolveState, val modificationTracker:
|
||||
class FirIdeResolveStateServiceImpl(val project: Project) : FirIdeResolveStateService {
|
||||
private val stateCache = mutableMapOf<IdeaModuleInfo, FirModuleData>()
|
||||
|
||||
private fun createResolveState(): FirResolveState {
|
||||
private fun createResolveState(): FirModuleResolveState {
|
||||
val provider = FirProjectSessionProvider(project)
|
||||
return FirResolveStateImpl(provider)
|
||||
return FirModuleResolveStateImpl(provider)
|
||||
}
|
||||
|
||||
private fun createModuleData(moduleInfo: IdeaModuleInfo): FirModuleData {
|
||||
@@ -48,7 +48,7 @@ class FirIdeResolveStateServiceImpl(val project: Project) : FirIdeResolveStateSe
|
||||
}
|
||||
|
||||
// TODO: multi thread protection
|
||||
override fun getResolveState(moduleInfo: IdeaModuleInfo): FirResolveState {
|
||||
override fun getResolveState(moduleInfo: IdeaModuleInfo): FirModuleResolveState {
|
||||
var moduleData = stateCache.getOrPut(moduleInfo) {
|
||||
createModuleData(moduleInfo)
|
||||
}
|
||||
|
||||
+3
-3
@@ -50,7 +50,7 @@ private fun getOrCreateIdeSession(
|
||||
}
|
||||
}
|
||||
|
||||
interface FirResolveState {
|
||||
interface FirModuleResolveState {
|
||||
val sessionProvider: FirSessionProvider
|
||||
|
||||
fun getSession(psi: KtElement): FirSession {
|
||||
@@ -72,7 +72,7 @@ interface FirResolveState {
|
||||
fun setDiagnosticsForFile(file: KtFile, fir: FirFile, diagnostics: Iterable<ConeDiagnostic> = emptyList())
|
||||
}
|
||||
|
||||
class FirResolveStateImpl(override val sessionProvider: FirSessionProvider) : FirResolveState {
|
||||
class FirModuleResolveStateImpl(override val sessionProvider: FirSessionProvider) : FirModuleResolveState {
|
||||
private val cache = mutableMapOf<KtElement, FirElement>()
|
||||
|
||||
private val diagnosticCache = mutableMapOf<KtElement, MutableList<Diagnostic>>()
|
||||
@@ -120,5 +120,5 @@ class FirResolveStateImpl(override val sessionProvider: FirSessionProvider) : Fi
|
||||
}
|
||||
}
|
||||
|
||||
fun KtElement.firResolveState(): FirResolveState =
|
||||
fun KtElement.firResolveState(): FirModuleResolveState =
|
||||
FirIdeResolveStateService.getInstance(project).getResolveState(getModuleInfo())
|
||||
@@ -73,7 +73,7 @@ private fun FirFile.findCallableMember(
|
||||
}
|
||||
|
||||
fun KtCallableDeclaration.getOrBuildFir(
|
||||
state: FirResolveState,
|
||||
state: FirModuleResolveState,
|
||||
phase: FirResolvePhase = FirResolvePhase.DECLARATIONS
|
||||
): FirCallableDeclaration<*> {
|
||||
val session = state.getSession(this)
|
||||
@@ -97,7 +97,7 @@ fun KtCallableDeclaration.getOrBuildFir(
|
||||
}
|
||||
|
||||
fun KtClassOrObject.getOrBuildFir(
|
||||
state: FirResolveState,
|
||||
state: FirModuleResolveState,
|
||||
phase: FirResolvePhase = FirResolvePhase.DECLARATIONS
|
||||
): FirRegularClass {
|
||||
val session = state.getSession(this)
|
||||
@@ -118,14 +118,14 @@ fun KtClassOrObject.getOrBuildFir(
|
||||
return firClass
|
||||
}
|
||||
|
||||
private fun KtFile.getOrBuildRawFirFile(state: FirResolveState): Pair<IdeFirProvider, FirFile> {
|
||||
private fun KtFile.getOrBuildRawFirFile(state: FirModuleResolveState): Pair<IdeFirProvider, FirFile> {
|
||||
val session = state.getSession(this)
|
||||
val firProvider = FirProvider.getInstance(session) as IdeFirProvider
|
||||
return firProvider to firProvider.getOrBuildFile(this)
|
||||
}
|
||||
|
||||
fun KtFile.getOrBuildFir(
|
||||
state: FirResolveState,
|
||||
state: FirModuleResolveState,
|
||||
phase: FirResolvePhase = FirResolvePhase.DECLARATIONS
|
||||
): FirFile {
|
||||
val (firProvider, firFile) = getOrBuildRawFirFile(state)
|
||||
@@ -138,7 +138,7 @@ fun KtFile.getOrBuildFir(
|
||||
return firFile
|
||||
}
|
||||
|
||||
fun KtFile.getOrBuildFirWithDiagnostics(state: FirResolveState): FirFile {
|
||||
fun KtFile.getOrBuildFirWithDiagnostics(state: FirModuleResolveState): FirFile {
|
||||
val (_, firFile) = getOrBuildRawFirFile(state)
|
||||
val currentResolvePhase = firFile.resolvePhase
|
||||
if (currentResolvePhase < FirResolvePhase.BODY_RESOLVE) {
|
||||
@@ -159,7 +159,7 @@ private fun FirDeclaration.runResolve(
|
||||
file: FirFile,
|
||||
firProvider: IdeFirProvider,
|
||||
toPhase: FirResolvePhase,
|
||||
state: FirResolveState
|
||||
state: FirModuleResolveState
|
||||
) {
|
||||
val nonLazyPhase = minOf(toPhase, FirResolvePhase.DECLARATIONS)
|
||||
file.runResolve(toPhase = nonLazyPhase, fromPhase = this.resolvePhase)
|
||||
@@ -194,7 +194,7 @@ private fun FirDeclaration.runResolve(
|
||||
}
|
||||
|
||||
fun KtElement.getOrBuildFir(
|
||||
state: FirResolveState,
|
||||
state: FirModuleResolveState,
|
||||
phase: FirResolvePhase = FirResolvePhase.BODY_RESOLVE
|
||||
): FirElement {
|
||||
val containerFir: FirDeclaration =
|
||||
|
||||
Reference in New Issue
Block a user