[Low Level FIR] do not use the same LLFirModuleLazyDeclarationResolver for the supertype computation

LLFirModuleLazyDeclarationResolver is bound to module, and should be taken from corrsponding FirSession
This commit is contained in:
Ilya Kirillov
2022-10-11 22:37:36 +02:00
committed by teamcity
parent 522aa1b3bb
commit 52a88f7858
3 changed files with 18 additions and 15 deletions
@@ -193,7 +193,7 @@ internal class LLFirModuleLazyDeclarationResolver(val moduleComponents: LLFirMod
phase = currentPhase,
designation = it,
scopeSession = scopeSession,
lazyDeclarationResolver = this,
lockProvider = moduleComponents.globalResolveComponents.lockProvider,
towerDataContextCollector = collector,
firProviderInterceptor = null,
checkPCE = checkPCE,
@@ -377,7 +377,7 @@ internal class LLFirModuleLazyDeclarationResolver(val moduleComponents: LLFirMod
phase = currentPhase,
designation = designation,
scopeSession = scopeSession,
lazyDeclarationResolver = this,
lockProvider = moduleComponents.globalResolveComponents.lockProvider,
towerDataContextCollector = null,
firProviderInterceptor = null,
checkPCE = checkPCE,
@@ -412,7 +412,7 @@ internal class LLFirModuleLazyDeclarationResolver(val moduleComponents: LLFirMod
phase = currentPhase,
designation = designation,
scopeSession = scopeSession,
lazyDeclarationResolver = this,
lockProvider = moduleComponents.globalResolveComponents.lockProvider,
towerDataContextCollector = towerDataContextCollector,
firProviderInterceptor = firProviderInterceptor,
checkPCE = checkPCE,
@@ -13,6 +13,7 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.LLFirLockPro
import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.runCustomResolveUnderLock
import org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve.LLFirModuleLazyDeclarationResolver
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.llFirResolvableSession
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.llFirSession
import org.jetbrains.kotlin.analysis.low.level.api.fir.transformers.LLFirLazyTransformer.Companion.updatePhaseDeep
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkCanceled
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkPhase
@@ -32,7 +33,6 @@ internal class LLFirDesignatedSupertypeResolverTransformer(
private val designation: FirDeclarationDesignationWithFile,
private val session: FirSession,
private val scopeSession: ScopeSession,
private val firLazyDeclarationResolver: LLFirModuleLazyDeclarationResolver,
private val lockProvider: LLFirLockProvider,
private val firProviderInterceptor: FirProviderInterceptor?,
private val checkPCE: Boolean,
@@ -80,14 +80,17 @@ internal class LLFirDesignatedSupertypeResolverTransformer(
for (nowVisit in toVisit) {
if (checkPCE) checkCanceled()
val resolver = DesignatedFirSupertypeResolverVisitor(nowVisit)
lockProvider.runCustomResolveUnderLock(nowVisit.firFile, checkPCE) {
firLazyDeclarationResolver.lazyResolveFileDeclaration(
firFile = nowVisit.firFile,
toPhase = FirResolvePhase.IMPORTS,
scopeSession = scopeSession,
checkPCE = true,
)
nowVisit.firFile.accept(resolver, null)
val session = nowVisit.firFile.llFirResolvableSession
if (session != null) {
lockProvider.runCustomResolveUnderLock(nowVisit.firFile, checkPCE) {
session.moduleComponents.firModuleLazyDeclarationResolver.lazyResolveFileDeclaration(
firFile = nowVisit.firFile,
toPhase = FirResolvePhase.IMPORTS,
scopeSession = scopeSession,
checkPCE = checkPCE,
)
nowVisit.firFile.accept(resolver, null)
}
}
resolver.declarationTransformer.ensureDesignationPassed()
visited[nowVisit.declaration] = nowVisit
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.fir.resolve.ScopeSession
import org.jetbrains.kotlin.fir.resolve.transformers.FirProviderInterceptor
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirTowerDataContextCollector
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.FirDeclarationDesignationWithFile
import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.LLFirLockProvider
import org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve.LLFirModuleLazyDeclarationResolver
internal object LazyTransformerFactory {
@@ -17,7 +18,7 @@ internal object LazyTransformerFactory {
phase: FirResolvePhase,
designation: FirDeclarationDesignationWithFile,
scopeSession: ScopeSession,
lazyDeclarationResolver: LLFirModuleLazyDeclarationResolver,
lockProvider: LLFirLockProvider,
towerDataContextCollector: FirTowerDataContextCollector?,
firProviderInterceptor: FirProviderInterceptor?,
checkPCE: Boolean,
@@ -31,8 +32,7 @@ internal object LazyTransformerFactory {
designation = designation,
session = designation.firFile.moduleData.session,
scopeSession = scopeSession,
firLazyDeclarationResolver = lazyDeclarationResolver,
lockProvider = lazyDeclarationResolver.moduleComponents.globalResolveComponents.lockProvider,
lockProvider = lockProvider,
firProviderInterceptor = firProviderInterceptor,
checkPCE = checkPCE,
)