[LL FIR] LLFirLazyResolver: drop redundant FirSession argument
LLFirSession should be received from LLFirResolveTarget to avoid potential wrong sessions ScopeSession cannot be dropped yet as we should be able to use another session during on-air resolution to avoid garbage in the original one ^KT-63547
This commit is contained in:
committed by
Space Team
parent
1538c125c3
commit
14082f6924
+3
@@ -6,6 +6,7 @@
|
|||||||
package org.jetbrains.kotlin.analysis.low.level.api.fir.api.targets
|
package org.jetbrains.kotlin.analysis.low.level.api.fir.api.targets
|
||||||
|
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.FirDesignationWithFile
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.FirDesignationWithFile
|
||||||
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.LLFirSession
|
||||||
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.sessions.llFirSession
|
||||||
import org.jetbrains.kotlin.fir.FirElementWithResolveState
|
import org.jetbrains.kotlin.fir.FirElementWithResolveState
|
||||||
@@ -32,3 +33,5 @@ internal fun LLFirResolveTarget.resolve(phase: FirResolvePhase) {
|
|||||||
val lazyDeclarationResolver = session.moduleComponents.firModuleLazyDeclarationResolver
|
val lazyDeclarationResolver = session.moduleComponents.firModuleLazyDeclarationResolver
|
||||||
lazyDeclarationResolver.lazyResolveTarget(this, phase, towerDataContextCollector = null)
|
lazyDeclarationResolver.lazyResolveTarget(this, phase, towerDataContextCollector = null)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal val LLFirResolveTarget.session: LLFirSession get() = target.llFirSession
|
||||||
+2
-4
@@ -35,11 +35,10 @@ internal object LLFirAnnotationArgumentsLazyResolver : LLFirLazyResolver(FirReso
|
|||||||
override fun resolve(
|
override fun resolve(
|
||||||
target: LLFirResolveTarget,
|
target: LLFirResolveTarget,
|
||||||
lockProvider: LLFirLockProvider,
|
lockProvider: LLFirLockProvider,
|
||||||
session: FirSession,
|
|
||||||
scopeSession: ScopeSession,
|
scopeSession: ScopeSession,
|
||||||
towerDataContextCollector: FirResolveContextCollector?,
|
towerDataContextCollector: FirResolveContextCollector?,
|
||||||
) {
|
) {
|
||||||
val resolver = LLFirAnnotationArgumentsTargetResolver(target, lockProvider, session, scopeSession, towerDataContextCollector)
|
val resolver = LLFirAnnotationArgumentsTargetResolver(target, lockProvider, scopeSession, towerDataContextCollector)
|
||||||
resolver.resolveDesignation()
|
resolver.resolveDesignation()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -83,7 +82,6 @@ internal object LLFirAnnotationArgumentsLazyResolver : LLFirLazyResolver(FirReso
|
|||||||
private class LLFirAnnotationArgumentsTargetResolver(
|
private class LLFirAnnotationArgumentsTargetResolver(
|
||||||
resolveTarget: LLFirResolveTarget,
|
resolveTarget: LLFirResolveTarget,
|
||||||
lockProvider: LLFirLockProvider,
|
lockProvider: LLFirLockProvider,
|
||||||
session: FirSession,
|
|
||||||
scopeSession: ScopeSession,
|
scopeSession: ScopeSession,
|
||||||
firResolveContextCollector: FirResolveContextCollector?,
|
firResolveContextCollector: FirResolveContextCollector?,
|
||||||
) : LLFirAbstractBodyTargetResolver(
|
) : LLFirAbstractBodyTargetResolver(
|
||||||
@@ -105,7 +103,7 @@ private class LLFirAnnotationArgumentsTargetResolver(
|
|||||||
* @see org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirAbstractBodyResolveTransformerDispatcher.transformForeignAnnotationCall
|
* @see org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirAbstractBodyResolveTransformerDispatcher.transformForeignAnnotationCall
|
||||||
*/
|
*/
|
||||||
override val transformer = FirAnnotationArgumentsTransformer(
|
override val transformer = FirAnnotationArgumentsTransformer(
|
||||||
session,
|
resolveTargetSession,
|
||||||
scopeSession,
|
scopeSession,
|
||||||
resolverPhase,
|
resolverPhase,
|
||||||
returnTypeCalculator = createReturnTypeCalculator(firResolveContextCollector = firResolveContextCollector),
|
returnTypeCalculator = createReturnTypeCalculator(firResolveContextCollector = firResolveContextCollector),
|
||||||
|
|||||||
+2
-4
@@ -59,11 +59,10 @@ internal object LLFirBodyLazyResolver : LLFirLazyResolver(FirResolvePhase.BODY_R
|
|||||||
override fun resolve(
|
override fun resolve(
|
||||||
target: LLFirResolveTarget,
|
target: LLFirResolveTarget,
|
||||||
lockProvider: LLFirLockProvider,
|
lockProvider: LLFirLockProvider,
|
||||||
session: FirSession,
|
|
||||||
scopeSession: ScopeSession,
|
scopeSession: ScopeSession,
|
||||||
towerDataContextCollector: FirResolveContextCollector?,
|
towerDataContextCollector: FirResolveContextCollector?,
|
||||||
) {
|
) {
|
||||||
val resolver = LLFirBodyTargetResolver(target, lockProvider, session, scopeSession, towerDataContextCollector)
|
val resolver = LLFirBodyTargetResolver(target, lockProvider, scopeSession, towerDataContextCollector)
|
||||||
resolver.resolveDesignation()
|
resolver.resolveDesignation()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -84,7 +83,6 @@ internal object LLFirBodyLazyResolver : LLFirLazyResolver(FirResolvePhase.BODY_R
|
|||||||
private class LLFirBodyTargetResolver(
|
private class LLFirBodyTargetResolver(
|
||||||
target: LLFirResolveTarget,
|
target: LLFirResolveTarget,
|
||||||
lockProvider: LLFirLockProvider,
|
lockProvider: LLFirLockProvider,
|
||||||
session: FirSession,
|
|
||||||
scopeSession: ScopeSession,
|
scopeSession: ScopeSession,
|
||||||
firResolveContextCollector: FirResolveContextCollector?,
|
firResolveContextCollector: FirResolveContextCollector?,
|
||||||
) : LLFirAbstractBodyTargetResolver(
|
) : LLFirAbstractBodyTargetResolver(
|
||||||
@@ -94,7 +92,7 @@ private class LLFirBodyTargetResolver(
|
|||||||
FirResolvePhase.BODY_RESOLVE,
|
FirResolvePhase.BODY_RESOLVE,
|
||||||
) {
|
) {
|
||||||
override val transformer = object : FirBodyResolveTransformer(
|
override val transformer = object : FirBodyResolveTransformer(
|
||||||
session,
|
resolveTargetSession,
|
||||||
phase = resolverPhase,
|
phase = resolverPhase,
|
||||||
implicitTypeOnly = false,
|
implicitTypeOnly = false,
|
||||||
scopeSession = scopeSession,
|
scopeSession = scopeSession,
|
||||||
|
|||||||
+2
-6
@@ -19,7 +19,6 @@ import org.jetbrains.kotlin.analysis.utils.errors.requireIsInstance
|
|||||||
import org.jetbrains.kotlin.fir.FirAnnotationContainer
|
import org.jetbrains.kotlin.fir.FirAnnotationContainer
|
||||||
import org.jetbrains.kotlin.fir.FirElementWithResolveState
|
import org.jetbrains.kotlin.fir.FirElementWithResolveState
|
||||||
import org.jetbrains.kotlin.fir.FirFileAnnotationsContainer
|
import org.jetbrains.kotlin.fir.FirFileAnnotationsContainer
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
|
||||||
import org.jetbrains.kotlin.fir.caches.firCachesFactory
|
import org.jetbrains.kotlin.fir.caches.firCachesFactory
|
||||||
import org.jetbrains.kotlin.fir.declarations.*
|
import org.jetbrains.kotlin.fir.declarations.*
|
||||||
import org.jetbrains.kotlin.fir.declarations.annotationPlatformSupport
|
import org.jetbrains.kotlin.fir.declarations.annotationPlatformSupport
|
||||||
@@ -39,11 +38,10 @@ internal object LLFirCompilerAnnotationsLazyResolver : LLFirLazyResolver(FirReso
|
|||||||
override fun resolve(
|
override fun resolve(
|
||||||
target: LLFirResolveTarget,
|
target: LLFirResolveTarget,
|
||||||
lockProvider: LLFirLockProvider,
|
lockProvider: LLFirLockProvider,
|
||||||
session: FirSession,
|
|
||||||
scopeSession: ScopeSession,
|
scopeSession: ScopeSession,
|
||||||
towerDataContextCollector: FirResolveContextCollector?,
|
towerDataContextCollector: FirResolveContextCollector?,
|
||||||
) {
|
) {
|
||||||
val resolver = LLFirCompilerRequiredAnnotationsTargetResolver(target, lockProvider, session, scopeSession)
|
val resolver = LLFirCompilerRequiredAnnotationsTargetResolver(target, lockProvider, scopeSession)
|
||||||
resolver.resolveDesignation()
|
resolver.resolveDesignation()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -58,7 +56,6 @@ internal object LLFirCompilerAnnotationsLazyResolver : LLFirLazyResolver(FirReso
|
|||||||
private class LLFirCompilerRequiredAnnotationsTargetResolver(
|
private class LLFirCompilerRequiredAnnotationsTargetResolver(
|
||||||
target: LLFirResolveTarget,
|
target: LLFirResolveTarget,
|
||||||
lockProvider: LLFirLockProvider,
|
lockProvider: LLFirLockProvider,
|
||||||
session: FirSession,
|
|
||||||
scopeSession: ScopeSession,
|
scopeSession: ScopeSession,
|
||||||
computationSession: LLFirCompilerRequiredAnnotationsComputationSession? = null,
|
computationSession: LLFirCompilerRequiredAnnotationsComputationSession? = null,
|
||||||
) : LLFirTargetResolver(target, lockProvider, FirResolvePhase.COMPILER_REQUIRED_ANNOTATIONS, isJumpingPhase = false) {
|
) : LLFirTargetResolver(target, lockProvider, FirResolvePhase.COMPILER_REQUIRED_ANNOTATIONS, isJumpingPhase = false) {
|
||||||
@@ -73,7 +70,6 @@ private class LLFirCompilerRequiredAnnotationsTargetResolver(
|
|||||||
val resolver = LLFirCompilerRequiredAnnotationsTargetResolver(
|
val resolver = LLFirCompilerRequiredAnnotationsTargetResolver(
|
||||||
designation,
|
designation,
|
||||||
lockProvider,
|
lockProvider,
|
||||||
targetSession,
|
|
||||||
targetSession.getScopeSession(),
|
targetSession.getScopeSession(),
|
||||||
this,
|
this,
|
||||||
)
|
)
|
||||||
@@ -85,7 +81,7 @@ private class LLFirCompilerRequiredAnnotationsTargetResolver(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private val transformer = FirCompilerRequiredAnnotationsResolveTransformer(
|
private val transformer = FirCompilerRequiredAnnotationsResolveTransformer(
|
||||||
session,
|
resolveTargetSession,
|
||||||
scopeSession,
|
scopeSession,
|
||||||
computationSession ?: LLFirCompilerRequiredAnnotationsComputationSession(),
|
computationSession ?: LLFirCompilerRequiredAnnotationsComputationSession(),
|
||||||
)
|
)
|
||||||
|
|||||||
+2
-5
@@ -14,7 +14,6 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkContractDescrip
|
|||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.isCallableWithSpecialBody
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.isCallableWithSpecialBody
|
||||||
import org.jetbrains.kotlin.fir.FirElementWithResolveState
|
import org.jetbrains.kotlin.fir.FirElementWithResolveState
|
||||||
import org.jetbrains.kotlin.fir.FirFileAnnotationsContainer
|
import org.jetbrains.kotlin.fir.FirFileAnnotationsContainer
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
|
||||||
import org.jetbrains.kotlin.fir.contracts.FirRawContractDescription
|
import org.jetbrains.kotlin.fir.contracts.FirRawContractDescription
|
||||||
import org.jetbrains.kotlin.fir.declarations.*
|
import org.jetbrains.kotlin.fir.declarations.*
|
||||||
import org.jetbrains.kotlin.fir.declarations.impl.FirPrimaryConstructor
|
import org.jetbrains.kotlin.fir.declarations.impl.FirPrimaryConstructor
|
||||||
@@ -30,11 +29,10 @@ internal object LLFirContractsLazyResolver : LLFirLazyResolver(FirResolvePhase.C
|
|||||||
override fun resolve(
|
override fun resolve(
|
||||||
target: LLFirResolveTarget,
|
target: LLFirResolveTarget,
|
||||||
lockProvider: LLFirLockProvider,
|
lockProvider: LLFirLockProvider,
|
||||||
session: FirSession,
|
|
||||||
scopeSession: ScopeSession,
|
scopeSession: ScopeSession,
|
||||||
towerDataContextCollector: FirResolveContextCollector?,
|
towerDataContextCollector: FirResolveContextCollector?,
|
||||||
) {
|
) {
|
||||||
val resolver = LLFirContractsTargetResolver(target, lockProvider, session, scopeSession, towerDataContextCollector)
|
val resolver = LLFirContractsTargetResolver(target, lockProvider, scopeSession, towerDataContextCollector)
|
||||||
resolver.resolveDesignation()
|
resolver.resolveDesignation()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -47,7 +45,6 @@ internal object LLFirContractsLazyResolver : LLFirLazyResolver(FirResolvePhase.C
|
|||||||
private class LLFirContractsTargetResolver(
|
private class LLFirContractsTargetResolver(
|
||||||
target: LLFirResolveTarget,
|
target: LLFirResolveTarget,
|
||||||
lockProvider: LLFirLockProvider,
|
lockProvider: LLFirLockProvider,
|
||||||
session: FirSession,
|
|
||||||
scopeSession: ScopeSession,
|
scopeSession: ScopeSession,
|
||||||
firResolveContextCollector: FirResolveContextCollector?,
|
firResolveContextCollector: FirResolveContextCollector?,
|
||||||
) : LLFirAbstractBodyTargetResolver(
|
) : LLFirAbstractBodyTargetResolver(
|
||||||
@@ -57,7 +54,7 @@ private class LLFirContractsTargetResolver(
|
|||||||
FirResolvePhase.CONTRACTS,
|
FirResolvePhase.CONTRACTS,
|
||||||
) {
|
) {
|
||||||
override val transformer = FirContractResolveTransformer(
|
override val transformer = FirContractResolveTransformer(
|
||||||
session,
|
resolveTargetSession,
|
||||||
scopeSession,
|
scopeSession,
|
||||||
firResolveContextCollector = firResolveContextCollector,
|
firResolveContextCollector = firResolveContextCollector,
|
||||||
)
|
)
|
||||||
|
|||||||
+3
-6
@@ -10,7 +10,6 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.LLFirLockPro
|
|||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkExpectForActualIsResolved
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkExpectForActualIsResolved
|
||||||
import org.jetbrains.kotlin.config.LanguageFeature
|
import org.jetbrains.kotlin.config.LanguageFeature
|
||||||
import org.jetbrains.kotlin.fir.FirElementWithResolveState
|
import org.jetbrains.kotlin.fir.FirElementWithResolveState
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.*
|
import org.jetbrains.kotlin.fir.declarations.*
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirStatement
|
import org.jetbrains.kotlin.fir.expressions.FirStatement
|
||||||
import org.jetbrains.kotlin.fir.isCopyCreatedInScope
|
import org.jetbrains.kotlin.fir.isCopyCreatedInScope
|
||||||
@@ -24,11 +23,10 @@ internal object LLFirExpectActualMatcherLazyResolver : LLFirLazyResolver(FirReso
|
|||||||
override fun resolve(
|
override fun resolve(
|
||||||
target: LLFirResolveTarget,
|
target: LLFirResolveTarget,
|
||||||
lockProvider: LLFirLockProvider,
|
lockProvider: LLFirLockProvider,
|
||||||
session: FirSession,
|
|
||||||
scopeSession: ScopeSession,
|
scopeSession: ScopeSession,
|
||||||
towerDataContextCollector: FirResolveContextCollector?,
|
towerDataContextCollector: FirResolveContextCollector?,
|
||||||
) {
|
) {
|
||||||
val resolver = LLFirExpectActualMatchingTargetResolver(target, lockProvider, session, scopeSession)
|
val resolver = LLFirExpectActualMatchingTargetResolver(target, lockProvider, scopeSession)
|
||||||
resolver.resolveDesignation()
|
resolver.resolveDesignation()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -45,10 +43,9 @@ internal object LLFirExpectActualMatcherLazyResolver : LLFirLazyResolver(FirReso
|
|||||||
private class LLFirExpectActualMatchingTargetResolver(
|
private class LLFirExpectActualMatchingTargetResolver(
|
||||||
target: LLFirResolveTarget,
|
target: LLFirResolveTarget,
|
||||||
lockProvider: LLFirLockProvider,
|
lockProvider: LLFirLockProvider,
|
||||||
session: FirSession,
|
|
||||||
scopeSession: ScopeSession,
|
scopeSession: ScopeSession,
|
||||||
) : LLFirTargetResolver(target, lockProvider, FirResolvePhase.EXPECT_ACTUAL_MATCHING) {
|
) : LLFirTargetResolver(target, lockProvider, FirResolvePhase.EXPECT_ACTUAL_MATCHING) {
|
||||||
private val enabled = session.languageVersionSettings.supportsFeature(LanguageFeature.MultiPlatformProjects)
|
private val enabled = resolveTargetSession.languageVersionSettings.supportsFeature(LanguageFeature.MultiPlatformProjects)
|
||||||
|
|
||||||
@Deprecated("Should never be called directly, only for override purposes, please use withRegularClass", level = DeprecationLevel.ERROR)
|
@Deprecated("Should never be called directly, only for override purposes, please use withRegularClass", level = DeprecationLevel.ERROR)
|
||||||
override fun withRegularClassImpl(firClass: FirRegularClass, action: () -> Unit) {
|
override fun withRegularClassImpl(firClass: FirRegularClass, action: () -> Unit) {
|
||||||
@@ -60,7 +57,7 @@ private class LLFirExpectActualMatchingTargetResolver(
|
|||||||
action()
|
action()
|
||||||
}
|
}
|
||||||
|
|
||||||
private val transformer = object : FirExpectActualMatcherTransformer(session, scopeSession) {
|
private val transformer = object : FirExpectActualMatcherTransformer(resolveTargetSession, scopeSession) {
|
||||||
override fun transformRegularClass(regularClass: FirRegularClass, data: Nothing?): FirStatement {
|
override fun transformRegularClass(regularClass: FirRegularClass, data: Nothing?): FirStatement {
|
||||||
transformMemberDeclaration(regularClass)
|
transformMemberDeclaration(regularClass)
|
||||||
return regularClass
|
return regularClass
|
||||||
|
|||||||
+2
-5
@@ -8,7 +8,6 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir.transformers
|
|||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.targets.LLFirResolveTarget
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.targets.LLFirResolveTarget
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.LLFirLockProvider
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.LLFirLockProvider
|
||||||
import org.jetbrains.kotlin.fir.FirElementWithResolveState
|
import org.jetbrains.kotlin.fir.FirElementWithResolveState
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
|
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||||
@@ -19,11 +18,10 @@ internal object LLFirGeneratedCompanionObjectLazyResolver : LLFirLazyResolver(Fi
|
|||||||
override fun resolve(
|
override fun resolve(
|
||||||
target: LLFirResolveTarget,
|
target: LLFirResolveTarget,
|
||||||
lockProvider: LLFirLockProvider,
|
lockProvider: LLFirLockProvider,
|
||||||
session: FirSession,
|
|
||||||
scopeSession: ScopeSession,
|
scopeSession: ScopeSession,
|
||||||
towerDataContextCollector: FirResolveContextCollector?,
|
towerDataContextCollector: FirResolveContextCollector?,
|
||||||
) {
|
) {
|
||||||
val resolver = LLFirCompanionGenerationTargetResolver(target, lockProvider, session)
|
val resolver = LLFirCompanionGenerationTargetResolver(target, lockProvider)
|
||||||
resolver.resolveDesignation()
|
resolver.resolveDesignation()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -31,9 +29,8 @@ internal object LLFirGeneratedCompanionObjectLazyResolver : LLFirLazyResolver(Fi
|
|||||||
private class LLFirCompanionGenerationTargetResolver(
|
private class LLFirCompanionGenerationTargetResolver(
|
||||||
target: LLFirResolveTarget,
|
target: LLFirResolveTarget,
|
||||||
lockProvider: LLFirLockProvider,
|
lockProvider: LLFirLockProvider,
|
||||||
session: FirSession,
|
|
||||||
) : LLFirTargetResolver(target, lockProvider, FirResolvePhase.COMPANION_GENERATION) {
|
) : LLFirTargetResolver(target, lockProvider, FirResolvePhase.COMPANION_GENERATION) {
|
||||||
private val transformer: FirCompanionGenerationTransformer = FirCompanionGenerationTransformer(session)
|
private val transformer: FirCompanionGenerationTransformer = FirCompanionGenerationTransformer(resolveTargetSession)
|
||||||
|
|
||||||
override fun doLazyResolveUnderLock(target: FirElementWithResolveState) {
|
override fun doLazyResolveUnderLock(target: FirElementWithResolveState) {
|
||||||
if (target !is FirRegularClass) return
|
if (target !is FirRegularClass) return
|
||||||
|
|||||||
+2
-5
@@ -14,7 +14,6 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.util.forEachDependentDecl
|
|||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.isScriptDependentDeclaration
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.isScriptDependentDeclaration
|
||||||
import org.jetbrains.kotlin.fir.FirElementWithResolveState
|
import org.jetbrains.kotlin.fir.FirElementWithResolveState
|
||||||
import org.jetbrains.kotlin.fir.FirFileAnnotationsContainer
|
import org.jetbrains.kotlin.fir.FirFileAnnotationsContainer
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.*
|
import org.jetbrains.kotlin.fir.declarations.*
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
||||||
import org.jetbrains.kotlin.fir.isCopyCreatedInScope
|
import org.jetbrains.kotlin.fir.isCopyCreatedInScope
|
||||||
@@ -35,11 +34,10 @@ internal object LLFirImplicitTypesLazyResolver : LLFirLazyResolver(FirResolvePha
|
|||||||
override fun resolve(
|
override fun resolve(
|
||||||
target: LLFirResolveTarget,
|
target: LLFirResolveTarget,
|
||||||
lockProvider: LLFirLockProvider,
|
lockProvider: LLFirLockProvider,
|
||||||
session: FirSession,
|
|
||||||
scopeSession: ScopeSession,
|
scopeSession: ScopeSession,
|
||||||
towerDataContextCollector: FirResolveContextCollector?,
|
towerDataContextCollector: FirResolveContextCollector?,
|
||||||
) {
|
) {
|
||||||
val resolver = LLFirImplicitBodyTargetResolver(target, lockProvider, session, scopeSession, towerDataContextCollector)
|
val resolver = LLFirImplicitBodyTargetResolver(target, lockProvider, scopeSession, towerDataContextCollector)
|
||||||
resolver.resolveDesignation()
|
resolver.resolveDesignation()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -112,7 +110,6 @@ internal class LLImplicitBodyResolveComputationSession : ImplicitBodyResolveComp
|
|||||||
internal class LLFirImplicitBodyTargetResolver(
|
internal class LLFirImplicitBodyTargetResolver(
|
||||||
target: LLFirResolveTarget,
|
target: LLFirResolveTarget,
|
||||||
lockProvider: LLFirLockProvider,
|
lockProvider: LLFirLockProvider,
|
||||||
session: FirSession,
|
|
||||||
scopeSession: ScopeSession,
|
scopeSession: ScopeSession,
|
||||||
firResolveContextCollector: FirResolveContextCollector?,
|
firResolveContextCollector: FirResolveContextCollector?,
|
||||||
llImplicitBodyResolveComputationSessionParameter: LLImplicitBodyResolveComputationSession? = null,
|
llImplicitBodyResolveComputationSessionParameter: LLImplicitBodyResolveComputationSession? = null,
|
||||||
@@ -125,7 +122,7 @@ internal class LLFirImplicitBodyTargetResolver(
|
|||||||
isJumpingPhase = true,
|
isJumpingPhase = true,
|
||||||
) {
|
) {
|
||||||
override val transformer = object : FirImplicitAwareBodyResolveTransformer(
|
override val transformer = object : FirImplicitAwareBodyResolveTransformer(
|
||||||
session,
|
resolveTargetSession,
|
||||||
implicitBodyResolveComputationSession = llImplicitBodyResolveComputationSession,
|
implicitBodyResolveComputationSession = llImplicitBodyResolveComputationSession,
|
||||||
phase = resolverPhase,
|
phase = resolverPhase,
|
||||||
implicitTypeOnly = true,
|
implicitTypeOnly = true,
|
||||||
|
|||||||
+1
-5
@@ -11,18 +11,14 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve.LLFirPhaseUp
|
|||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkPhase
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkPhase
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.forEachDependentDeclaration
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.forEachDependentDeclaration
|
||||||
import org.jetbrains.kotlin.fir.FirElementWithResolveState
|
import org.jetbrains.kotlin.fir.FirElementWithResolveState
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.*
|
import org.jetbrains.kotlin.fir.declarations.*
|
||||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirResolveContextCollector
|
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirResolveContextCollector
|
||||||
|
|
||||||
internal abstract class LLFirLazyResolver(
|
internal abstract class LLFirLazyResolver(val resolverPhase: FirResolvePhase) {
|
||||||
val resolverPhase: FirResolvePhase,
|
|
||||||
) {
|
|
||||||
abstract fun resolve(
|
abstract fun resolve(
|
||||||
target: LLFirResolveTarget,
|
target: LLFirResolveTarget,
|
||||||
lockProvider: LLFirLockProvider,
|
lockProvider: LLFirLockProvider,
|
||||||
session: FirSession,
|
|
||||||
scopeSession: ScopeSession,
|
scopeSession: ScopeSession,
|
||||||
towerDataContextCollector: FirResolveContextCollector?,
|
towerDataContextCollector: FirResolveContextCollector?,
|
||||||
)
|
)
|
||||||
|
|||||||
+1
-2
@@ -20,10 +20,9 @@ internal object LLFirLazyResolverRunner {
|
|||||||
towerDataContextCollector: FirResolveContextCollector?,
|
towerDataContextCollector: FirResolveContextCollector?,
|
||||||
) {
|
) {
|
||||||
val lazyResolver = LLFirLazyPhaseResolverByPhase.getByPhase(phase)
|
val lazyResolver = LLFirLazyPhaseResolverByPhase.getByPhase(phase)
|
||||||
val session = target.target.moduleData.session
|
|
||||||
lockProvider.withGlobalLock {
|
lockProvider.withGlobalLock {
|
||||||
lockProvider.withGlobalPhaseLock(phase) {
|
lockProvider.withGlobalPhaseLock(phase) {
|
||||||
lazyResolver.resolve(target, lockProvider, session, scopeSession, towerDataContextCollector)
|
lazyResolver.resolve(target, lockProvider, scopeSession, towerDataContextCollector)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
-1
@@ -38,7 +38,6 @@ internal class LLFirReturnTypeCalculatorWithJump(
|
|||||||
val resolver = LLFirImplicitBodyTargetResolver(
|
val resolver = LLFirImplicitBodyTargetResolver(
|
||||||
designation,
|
designation,
|
||||||
lockProvider = lockProvider,
|
lockProvider = lockProvider,
|
||||||
session = targetSession,
|
|
||||||
scopeSession = targetSession.getScopeSession(),
|
scopeSession = targetSession.getScopeSession(),
|
||||||
firResolveContextCollector = towerDataContextCollector,
|
firResolveContextCollector = towerDataContextCollector,
|
||||||
llImplicitBodyResolveComputationSessionParameter = implicitBodyResolveComputationSession as LLImplicitBodyResolveComputationSession,
|
llImplicitBodyResolveComputationSessionParameter = implicitBodyResolveComputationSession as LLImplicitBodyResolveComputationSession,
|
||||||
|
|||||||
-2
@@ -8,7 +8,6 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir.transformers
|
|||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.targets.LLFirResolveTarget
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.targets.LLFirResolveTarget
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.LLFirLockProvider
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.LLFirLockProvider
|
||||||
import org.jetbrains.kotlin.fir.FirElementWithResolveState
|
import org.jetbrains.kotlin.fir.FirElementWithResolveState
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirResolveContextCollector
|
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirResolveContextCollector
|
||||||
@@ -17,7 +16,6 @@ internal object LLFirSealedClassInheritorsLazyResolver : LLFirLazyResolver(FirRe
|
|||||||
override fun resolve(
|
override fun resolve(
|
||||||
target: LLFirResolveTarget,
|
target: LLFirResolveTarget,
|
||||||
lockProvider: LLFirLockProvider,
|
lockProvider: LLFirLockProvider,
|
||||||
session: FirSession,
|
|
||||||
scopeSession: ScopeSession,
|
scopeSession: ScopeSession,
|
||||||
towerDataContextCollector: FirResolveContextCollector?,
|
towerDataContextCollector: FirResolveContextCollector?,
|
||||||
) {
|
) {
|
||||||
|
|||||||
+3
-6
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir.transformers
|
|||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.targets.LLFirResolveTarget
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.targets.LLFirResolveTarget
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.targets.LLFirSingleResolveTarget
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.targets.LLFirSingleResolveTarget
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.targets.asResolveTarget
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.targets.asResolveTarget
|
||||||
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.targets.session
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.tryCollectDesignationWithFile
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.tryCollectDesignationWithFile
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.LLFirLockProvider
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.LLFirLockProvider
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.llFirSession
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.llFirSession
|
||||||
@@ -34,14 +35,12 @@ internal object LLFirStatusLazyResolver : LLFirLazyResolver(FirResolvePhase.STAT
|
|||||||
override fun resolve(
|
override fun resolve(
|
||||||
target: LLFirResolveTarget,
|
target: LLFirResolveTarget,
|
||||||
lockProvider: LLFirLockProvider,
|
lockProvider: LLFirLockProvider,
|
||||||
session: FirSession,
|
|
||||||
scopeSession: ScopeSession,
|
scopeSession: ScopeSession,
|
||||||
towerDataContextCollector: FirResolveContextCollector?,
|
towerDataContextCollector: FirResolveContextCollector?,
|
||||||
) {
|
) {
|
||||||
val resolver = LLFirStatusTargetResolver(
|
val resolver = LLFirStatusTargetResolver(
|
||||||
target = target,
|
target = target,
|
||||||
lockProvider = lockProvider,
|
lockProvider = lockProvider,
|
||||||
session = session,
|
|
||||||
scopeSession = scopeSession,
|
scopeSession = scopeSession,
|
||||||
resolveMode = target.resolveMode(),
|
resolveMode = target.resolveMode(),
|
||||||
)
|
)
|
||||||
@@ -110,12 +109,11 @@ private class LLStatusComputationSession(val useSiteSession: FirSession) : Statu
|
|||||||
private class LLFirStatusTargetResolver(
|
private class LLFirStatusTargetResolver(
|
||||||
target: LLFirResolveTarget,
|
target: LLFirResolveTarget,
|
||||||
lockProvider: LLFirLockProvider,
|
lockProvider: LLFirLockProvider,
|
||||||
session: FirSession,
|
|
||||||
scopeSession: ScopeSession,
|
scopeSession: ScopeSession,
|
||||||
private val statusComputationSession: LLStatusComputationSession = LLStatusComputationSession(session),
|
private val statusComputationSession: LLStatusComputationSession = LLStatusComputationSession(target.session),
|
||||||
private val resolveMode: StatusResolveMode,
|
private val resolveMode: StatusResolveMode,
|
||||||
) : LLFirTargetResolver(target, lockProvider, FirResolvePhase.STATUS, isJumpingPhase = false) {
|
) : LLFirTargetResolver(target, lockProvider, FirResolvePhase.STATUS, isJumpingPhase = false) {
|
||||||
private val transformer = Transformer(session, scopeSession)
|
private val transformer = Transformer(resolveTargetSession, scopeSession)
|
||||||
|
|
||||||
@Deprecated("Should never be called directly, only for override purposes, please use withRegularClass", level = DeprecationLevel.ERROR)
|
@Deprecated("Should never be called directly, only for override purposes, please use withRegularClass", level = DeprecationLevel.ERROR)
|
||||||
override fun withRegularClassImpl(firClass: FirRegularClass, action: () -> Unit) {
|
override fun withRegularClassImpl(firClass: FirRegularClass, action: () -> Unit) {
|
||||||
@@ -266,7 +264,6 @@ private class LLFirStatusTargetResolver(
|
|||||||
val resolver = LLFirStatusTargetResolver(
|
val resolver = LLFirStatusTargetResolver(
|
||||||
target,
|
target,
|
||||||
lockProvider,
|
lockProvider,
|
||||||
targetSession,
|
|
||||||
targetSession.getScopeSession(),
|
targetSession.getScopeSession(),
|
||||||
computationSession,
|
computationSession,
|
||||||
resolveMode = resolveMode,
|
resolveMode = resolveMode,
|
||||||
|
|||||||
+9
-11
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir.transformers
|
|||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.targets.LLFirResolveTarget
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.targets.LLFirResolveTarget
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.targets.LLFirSingleResolveTarget
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.targets.LLFirSingleResolveTarget
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.targets.asResolveTarget
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.targets.asResolveTarget
|
||||||
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.targets.session
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.tryCollectDesignationWithFile
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.tryCollectDesignationWithFile
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.LLFirLockProvider
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.LLFirLockProvider
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkTypeRefIsResolved
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkTypeRefIsResolved
|
||||||
@@ -32,11 +33,10 @@ internal object LLFirSupertypeLazyResolver : LLFirLazyResolver(FirResolvePhase.S
|
|||||||
override fun resolve(
|
override fun resolve(
|
||||||
target: LLFirResolveTarget,
|
target: LLFirResolveTarget,
|
||||||
lockProvider: LLFirLockProvider,
|
lockProvider: LLFirLockProvider,
|
||||||
session: FirSession,
|
|
||||||
scopeSession: ScopeSession,
|
scopeSession: ScopeSession,
|
||||||
towerDataContextCollector: FirResolveContextCollector?,
|
towerDataContextCollector: FirResolveContextCollector?,
|
||||||
) {
|
) {
|
||||||
val resolver = LLFirSuperTypeTargetResolver(target, lockProvider, session, scopeSession)
|
val resolver = LLFirSuperTypeTargetResolver(target, lockProvider, scopeSession)
|
||||||
resolver.resolveDesignation()
|
resolver.resolveDesignation()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -58,13 +58,12 @@ internal object LLFirSupertypeLazyResolver : LLFirLazyResolver(FirResolvePhase.S
|
|||||||
private class LLFirSuperTypeTargetResolver(
|
private class LLFirSuperTypeTargetResolver(
|
||||||
target: LLFirResolveTarget,
|
target: LLFirResolveTarget,
|
||||||
lockProvider: LLFirLockProvider,
|
lockProvider: LLFirLockProvider,
|
||||||
private val session: FirSession,
|
|
||||||
private val scopeSession: ScopeSession,
|
private val scopeSession: ScopeSession,
|
||||||
private val supertypeComputationSession: LLFirSupertypeComputationSession = LLFirSupertypeComputationSession(session),
|
private val supertypeComputationSession: LLFirSupertypeComputationSession = LLFirSupertypeComputationSession(target.session),
|
||||||
private val visitedElements: MutableSet<FirElementWithResolveState> = hashSetOf(),
|
private val visitedElements: MutableSet<FirElementWithResolveState> = hashSetOf(),
|
||||||
) : LLFirTargetResolver(target, lockProvider, FirResolvePhase.SUPER_TYPES, isJumpingPhase = false) {
|
) : LLFirTargetResolver(target, lockProvider, FirResolvePhase.SUPER_TYPES, isJumpingPhase = false) {
|
||||||
private val supertypeResolver = object : FirSupertypeResolverVisitor(
|
private val supertypeResolver = object : FirSupertypeResolverVisitor(
|
||||||
session = session,
|
session = resolveTargetSession,
|
||||||
supertypeComputationSession = supertypeComputationSession,
|
supertypeComputationSession = supertypeComputationSession,
|
||||||
scopeSession = scopeSession,
|
scopeSession = scopeSession,
|
||||||
) {
|
) {
|
||||||
@@ -110,7 +109,7 @@ private class LLFirSuperTypeTargetResolver(
|
|||||||
resolver = { supertypeResolver.resolveSpecificClassLikeSupertypes(target, it) },
|
resolver = { supertypeResolver.resolveSpecificClassLikeSupertypes(target, it) },
|
||||||
superTypeUpdater = {
|
superTypeUpdater = {
|
||||||
target.replaceSuperTypeRefs(it)
|
target.replaceSuperTypeRefs(it)
|
||||||
session.platformSupertypeUpdater?.updateSupertypesIfNeeded(target, scopeSession)
|
resolveTargetSession.platformSupertypeUpdater?.updateSupertypesIfNeeded(target, scopeSession)
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
is FirTypeAlias -> performResolve(
|
is FirTypeAlias -> performResolve(
|
||||||
@@ -176,7 +175,7 @@ private class LLFirSuperTypeTargetResolver(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun FirClassLikeDeclaration.asResolveTarget(): LLFirSingleResolveTarget? {
|
private fun FirClassLikeDeclaration.asResolveTarget(): LLFirSingleResolveTarget? {
|
||||||
return takeIf { it.canHaveLoopInSupertypesHierarchy(session) }
|
return takeIf { it.canHaveLoopInSupertypesHierarchy(resolveTargetSession) }
|
||||||
?.tryCollectDesignationWithFile()
|
?.tryCollectDesignationWithFile()
|
||||||
?.asResolveTarget()
|
?.asResolveTarget()
|
||||||
}
|
}
|
||||||
@@ -185,7 +184,6 @@ private class LLFirSuperTypeTargetResolver(
|
|||||||
LLFirSuperTypeTargetResolver(
|
LLFirSuperTypeTargetResolver(
|
||||||
target = target,
|
target = target,
|
||||||
lockProvider = lockProvider,
|
lockProvider = lockProvider,
|
||||||
session = session,
|
|
||||||
scopeSession = scopeSession,
|
scopeSession = scopeSession,
|
||||||
supertypeComputationSession = supertypeComputationSession,
|
supertypeComputationSession = supertypeComputationSession,
|
||||||
visitedElements = visitedElements,
|
visitedElements = visitedElements,
|
||||||
@@ -199,14 +197,14 @@ private class LLFirSuperTypeTargetResolver(
|
|||||||
* So we crawl the resolved supertypes of visited designations to find more designations to collect.
|
* So we crawl the resolved supertypes of visited designations to find more designations to collect.
|
||||||
*/
|
*/
|
||||||
private fun crawlSupertype(type: ConeKotlinType) {
|
private fun crawlSupertype(type: ConeKotlinType) {
|
||||||
val classLikeDeclaration = type.toSymbol(session)?.fir
|
val classLikeDeclaration = type.toSymbol(resolveTargetSession)?.fir
|
||||||
if (classLikeDeclaration !is FirClassLikeDeclaration) return
|
if (classLikeDeclaration !is FirClassLikeDeclaration) return
|
||||||
if (classLikeDeclaration in visitedElements) return
|
if (classLikeDeclaration in visitedElements) return
|
||||||
if (classLikeDeclaration is FirJavaClass) {
|
if (classLikeDeclaration is FirJavaClass) {
|
||||||
if (!classLikeDeclaration.canHaveLoopInSupertypesHierarchy(session)) return
|
if (!classLikeDeclaration.canHaveLoopInSupertypesHierarchy(resolveTargetSession)) return
|
||||||
|
|
||||||
visitedElements += classLikeDeclaration
|
visitedElements += classLikeDeclaration
|
||||||
val parentClass = classLikeDeclaration.outerClass(session)
|
val parentClass = classLikeDeclaration.outerClass(resolveTargetSession)
|
||||||
if (parentClass != null) {
|
if (parentClass != null) {
|
||||||
crawlSupertype(parentClass.defaultType())
|
crawlSupertype(parentClass.defaultType())
|
||||||
}
|
}
|
||||||
|
|||||||
+3
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir.transformers
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.targets.*
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.targets.*
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.LLFirLockProvider
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.LLFirLockProvider
|
||||||
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.LLFirSession
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkPhase
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkPhase
|
||||||
import org.jetbrains.kotlin.fir.FirElement
|
import org.jetbrains.kotlin.fir.FirElement
|
||||||
import org.jetbrains.kotlin.fir.FirElementWithResolveState
|
import org.jetbrains.kotlin.fir.FirElementWithResolveState
|
||||||
@@ -37,6 +38,8 @@ internal abstract class LLFirTargetResolver(
|
|||||||
protected val resolverPhase: FirResolvePhase,
|
protected val resolverPhase: FirResolvePhase,
|
||||||
private val isJumpingPhase: Boolean = false,
|
private val isJumpingPhase: Boolean = false,
|
||||||
) : LLFirResolveTargetVisitor {
|
) : LLFirResolveTargetVisitor {
|
||||||
|
val resolveTargetSession: LLFirSession get() = resolveTarget.session
|
||||||
|
|
||||||
private val _nestedClassesStack = mutableListOf<FirRegularClass>()
|
private val _nestedClassesStack = mutableListOf<FirRegularClass>()
|
||||||
|
|
||||||
val nestedClassesStack: List<FirRegularClass> get() = _nestedClassesStack
|
val nestedClassesStack: List<FirRegularClass> get() = _nestedClassesStack
|
||||||
|
|||||||
+4
-6
@@ -6,6 +6,7 @@
|
|||||||
package org.jetbrains.kotlin.analysis.low.level.api.fir.transformers
|
package org.jetbrains.kotlin.analysis.low.level.api.fir.transformers
|
||||||
|
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.targets.LLFirResolveTarget
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.targets.LLFirResolveTarget
|
||||||
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.targets.session
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.LLFirLockProvider
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.LLFirLockProvider
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve.FirLazyBodiesCalculator
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve.FirLazyBodiesCalculator
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkAnnotationTypeIsResolved
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkAnnotationTypeIsResolved
|
||||||
@@ -18,8 +19,6 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.util.forEachDependentDecl
|
|||||||
import org.jetbrains.kotlin.fir.FirAnnotationContainer
|
import org.jetbrains.kotlin.fir.FirAnnotationContainer
|
||||||
import org.jetbrains.kotlin.fir.FirElementWithResolveState
|
import org.jetbrains.kotlin.fir.FirElementWithResolveState
|
||||||
import org.jetbrains.kotlin.fir.FirFileAnnotationsContainer
|
import org.jetbrains.kotlin.fir.FirFileAnnotationsContainer
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
|
||||||
import org.jetbrains.kotlin.util.PrivateForInline
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.*
|
import org.jetbrains.kotlin.fir.declarations.*
|
||||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||||
import org.jetbrains.kotlin.fir.resolve.transformers.FirTypeResolveTransformer
|
import org.jetbrains.kotlin.fir.resolve.transformers.FirTypeResolveTransformer
|
||||||
@@ -29,17 +28,17 @@ import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
|
|||||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
import org.jetbrains.kotlin.fir.utils.exceptions.withFirEntry
|
import org.jetbrains.kotlin.fir.utils.exceptions.withFirEntry
|
||||||
import org.jetbrains.kotlin.fir.visitors.transformSingle
|
import org.jetbrains.kotlin.fir.visitors.transformSingle
|
||||||
|
import org.jetbrains.kotlin.util.PrivateForInline
|
||||||
import org.jetbrains.kotlin.utils.exceptions.errorWithAttachment
|
import org.jetbrains.kotlin.utils.exceptions.errorWithAttachment
|
||||||
|
|
||||||
internal object LLFirTypeLazyResolver : LLFirLazyResolver(FirResolvePhase.TYPES) {
|
internal object LLFirTypeLazyResolver : LLFirLazyResolver(FirResolvePhase.TYPES) {
|
||||||
override fun resolve(
|
override fun resolve(
|
||||||
target: LLFirResolveTarget,
|
target: LLFirResolveTarget,
|
||||||
lockProvider: LLFirLockProvider,
|
lockProvider: LLFirLockProvider,
|
||||||
session: FirSession,
|
|
||||||
scopeSession: ScopeSession,
|
scopeSession: ScopeSession,
|
||||||
towerDataContextCollector: FirResolveContextCollector?,
|
towerDataContextCollector: FirResolveContextCollector?,
|
||||||
) {
|
) {
|
||||||
val resolver = LLFirTypeTargetResolver(target, lockProvider, session, scopeSession)
|
val resolver = LLFirTypeTargetResolver(target, lockProvider, scopeSession)
|
||||||
resolver.resolveDesignation()
|
resolver.resolveDesignation()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -73,10 +72,9 @@ internal object LLFirTypeLazyResolver : LLFirLazyResolver(FirResolvePhase.TYPES)
|
|||||||
private class LLFirTypeTargetResolver(
|
private class LLFirTypeTargetResolver(
|
||||||
target: LLFirResolveTarget,
|
target: LLFirResolveTarget,
|
||||||
lockProvider: LLFirLockProvider,
|
lockProvider: LLFirLockProvider,
|
||||||
session: FirSession,
|
|
||||||
scopeSession: ScopeSession,
|
scopeSession: ScopeSession,
|
||||||
) : LLFirTargetResolver(target, lockProvider, FirResolvePhase.TYPES) {
|
) : LLFirTargetResolver(target, lockProvider, FirResolvePhase.TYPES) {
|
||||||
private val transformer = object : FirTypeResolveTransformer(session, scopeSession) {
|
private val transformer = object : FirTypeResolveTransformer(target.session, scopeSession) {
|
||||||
override fun transformTypeRef(typeRef: FirTypeRef, data: Any?): FirResolvedTypeRef {
|
override fun transformTypeRef(typeRef: FirTypeRef, data: Any?): FirResolvedTypeRef {
|
||||||
FirLazyBodiesCalculator.calculateAnnotations(typeRef, session)
|
FirLazyBodiesCalculator.calculateAnnotations(typeRef, session)
|
||||||
return super.transformTypeRef(typeRef, data)
|
return super.transformTypeRef(typeRef, data)
|
||||||
|
|||||||
Reference in New Issue
Block a user