[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.LLFirResolveSession
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.getModule 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.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.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.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.LLFirResolvableModuleSession
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.LLFirSession import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.LLFirSession
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.LLFirSessionCache import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.LLFirSessionCache
@@ -61,16 +59,20 @@ internal abstract class LLFirResolvableResolveSession(
get() = useSiteFirSessionCached.value get() = useSiteFirSessionCached.value
override fun getSessionFor(module: KtModule): LLFirSession { 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) { if (module == useSiteFirSession.ktModule) {
return useSiteFirSession return useSiteFirSession
} }
val cache = LLFirSessionCache.getInstance(module.project) val cache = LLFirSessionCache.getInstance(module.project)
return cache.getSession(module, preferBinary = true) return cache.getSession(module, preferBinary)
}
protected open fun getResolvableSessionFor(module: KtModule): LLFirResolvableModuleSession {
return getSessionFor(module) as LLFirResolvableModuleSession
} }
override fun getScopeSessionFor(firSession: FirSession): ScopeSession { override fun getScopeSessionFor(firSession: FirSession): ScopeSession {