[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, phase = currentPhase,
designation = it, designation = it,
scopeSession = scopeSession, scopeSession = scopeSession,
lazyDeclarationResolver = this, lockProvider = moduleComponents.globalResolveComponents.lockProvider,
towerDataContextCollector = collector, towerDataContextCollector = collector,
firProviderInterceptor = null, firProviderInterceptor = null,
checkPCE = checkPCE, checkPCE = checkPCE,
@@ -377,7 +377,7 @@ internal class LLFirModuleLazyDeclarationResolver(val moduleComponents: LLFirMod
phase = currentPhase, phase = currentPhase,
designation = designation, designation = designation,
scopeSession = scopeSession, scopeSession = scopeSession,
lazyDeclarationResolver = this, lockProvider = moduleComponents.globalResolveComponents.lockProvider,
towerDataContextCollector = null, towerDataContextCollector = null,
firProviderInterceptor = null, firProviderInterceptor = null,
checkPCE = checkPCE, checkPCE = checkPCE,
@@ -412,7 +412,7 @@ internal class LLFirModuleLazyDeclarationResolver(val moduleComponents: LLFirMod
phase = currentPhase, phase = currentPhase,
designation = designation, designation = designation,
scopeSession = scopeSession, scopeSession = scopeSession,
lazyDeclarationResolver = this, lockProvider = moduleComponents.globalResolveComponents.lockProvider,
towerDataContextCollector = towerDataContextCollector, towerDataContextCollector = towerDataContextCollector,
firProviderInterceptor = firProviderInterceptor, firProviderInterceptor = firProviderInterceptor,
checkPCE = checkPCE, 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.file.builder.runCustomResolveUnderLock
import org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve.LLFirModuleLazyDeclarationResolver 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.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.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.checkCanceled
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkPhase import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkPhase
@@ -32,7 +33,6 @@ internal class LLFirDesignatedSupertypeResolverTransformer(
private val designation: FirDeclarationDesignationWithFile, private val designation: FirDeclarationDesignationWithFile,
private val session: FirSession, private val session: FirSession,
private val scopeSession: ScopeSession, private val scopeSession: ScopeSession,
private val firLazyDeclarationResolver: LLFirModuleLazyDeclarationResolver,
private val lockProvider: LLFirLockProvider, private val lockProvider: LLFirLockProvider,
private val firProviderInterceptor: FirProviderInterceptor?, private val firProviderInterceptor: FirProviderInterceptor?,
private val checkPCE: Boolean, private val checkPCE: Boolean,
@@ -80,14 +80,17 @@ internal class LLFirDesignatedSupertypeResolverTransformer(
for (nowVisit in toVisit) { for (nowVisit in toVisit) {
if (checkPCE) checkCanceled() if (checkPCE) checkCanceled()
val resolver = DesignatedFirSupertypeResolverVisitor(nowVisit) val resolver = DesignatedFirSupertypeResolverVisitor(nowVisit)
lockProvider.runCustomResolveUnderLock(nowVisit.firFile, checkPCE) { val session = nowVisit.firFile.llFirResolvableSession
firLazyDeclarationResolver.lazyResolveFileDeclaration( if (session != null) {
firFile = nowVisit.firFile, lockProvider.runCustomResolveUnderLock(nowVisit.firFile, checkPCE) {
toPhase = FirResolvePhase.IMPORTS, session.moduleComponents.firModuleLazyDeclarationResolver.lazyResolveFileDeclaration(
scopeSession = scopeSession, firFile = nowVisit.firFile,
checkPCE = true, toPhase = FirResolvePhase.IMPORTS,
) scopeSession = scopeSession,
nowVisit.firFile.accept(resolver, null) checkPCE = checkPCE,
)
nowVisit.firFile.accept(resolver, null)
}
} }
resolver.declarationTransformer.ensureDesignationPassed() resolver.declarationTransformer.ensureDesignationPassed()
visited[nowVisit.declaration] = nowVisit 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.FirProviderInterceptor
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirTowerDataContextCollector 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.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 import org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve.LLFirModuleLazyDeclarationResolver
internal object LazyTransformerFactory { internal object LazyTransformerFactory {
@@ -17,7 +18,7 @@ internal object LazyTransformerFactory {
phase: FirResolvePhase, phase: FirResolvePhase,
designation: FirDeclarationDesignationWithFile, designation: FirDeclarationDesignationWithFile,
scopeSession: ScopeSession, scopeSession: ScopeSession,
lazyDeclarationResolver: LLFirModuleLazyDeclarationResolver, lockProvider: LLFirLockProvider,
towerDataContextCollector: FirTowerDataContextCollector?, towerDataContextCollector: FirTowerDataContextCollector?,
firProviderInterceptor: FirProviderInterceptor?, firProviderInterceptor: FirProviderInterceptor?,
checkPCE: Boolean, checkPCE: Boolean,
@@ -31,8 +32,7 @@ internal object LazyTransformerFactory {
designation = designation, designation = designation,
session = designation.firFile.moduleData.session, session = designation.firFile.moduleData.session,
scopeSession = scopeSession, scopeSession = scopeSession,
firLazyDeclarationResolver = lazyDeclarationResolver, lockProvider = lockProvider,
lockProvider = lazyDeclarationResolver.moduleComponents.globalResolveComponents.lockProvider,
firProviderInterceptor = firProviderInterceptor, firProviderInterceptor = firProviderInterceptor,
checkPCE = checkPCE, checkPCE = checkPCE,
) )