[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:
+3
-3
@@ -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,
|
||||||
|
|||||||
+12
-9
@@ -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
|
||||||
|
|||||||
+3
-3
@@ -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,
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user