Rename: FirResolveState -> FirModuleResolveState to reflect per-module status

This commit is contained in:
Mikhail Glukhikh
2019-12-16 12:35:22 +03:00
parent 8dbbd64beb
commit 8703da5a25
4 changed files with 16 additions and 16 deletions
@@ -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)
}
@@ -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 =