[LL API] Fix 'getResolvableSessionFor()' for library sessions

This commit is contained in:
Yan Zhulanow
2023-05-31 17:14:25 +09:00
committed by Space Team
parent 362675a1b5
commit e5f9eb5b24
@@ -12,10 +12,8 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirModuleResolveCompone
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.getModule
import org.jetbrains.kotlin.analysis.low.level.api.fir.element.builder.FirTowerContextProvider
import org.jetbrains.kotlin.analysis.low.level.api.fir.element.builder.canBePartOfParentDeclaration
import org.jetbrains.kotlin.analysis.low.level.api.fir.element.builder.getNonLocalContainingOrThisDeclaration
import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.retryOnInvalidSession
import org.jetbrains.kotlin.analysis.low.level.api.fir.file.structure.FirElementsRecorder
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.LLFirResolvableModuleSession
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.LLFirSession
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.LLFirSessionCache
@@ -61,16 +59,20 @@ internal abstract class LLFirResolvableResolveSession(
get() = useSiteFirSessionCached.value
override fun getSessionFor(module: KtModule): LLFirSession {
return getSession(module, preferBinary = true)
}
private fun getResolvableSessionFor(module: KtModule): LLFirResolvableModuleSession {
return getSession(module, preferBinary = false) as LLFirResolvableModuleSession
}
private fun getSession(module: KtModule, preferBinary: Boolean): LLFirSession {
if (module == useSiteFirSession.ktModule) {
return useSiteFirSession
}
val cache = LLFirSessionCache.getInstance(module.project)
return cache.getSession(module, preferBinary = true)
}
protected open fun getResolvableSessionFor(module: KtModule): LLFirResolvableModuleSession {
return getSessionFor(module) as LLFirResolvableModuleSession
return cache.getSession(module, preferBinary)
}
override fun getScopeSessionFor(firSession: FirSession): ScopeSession {