[LL FIR] introduce LLImplicitBodyResolveComputationSession
This class will be used in the next commit to have a custom logic in Low Level FIR ^KT-63042
This commit is contained in:
committed by
Space Team
parent
9888cbbfcd
commit
daaf30e056
+4
-7
@@ -6,19 +6,16 @@
|
|||||||
package org.jetbrains.kotlin.analysis.low.level.api.fir.diagnostics.fir
|
package org.jetbrains.kotlin.analysis.low.level.api.fir.diagnostics.fir
|
||||||
|
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirGlobalResolveComponents
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirGlobalResolveComponents
|
||||||
import org.jetbrains.kotlin.fir.analysis.checkers.context.PersistentCheckerContext
|
|
||||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
|
||||||
import org.jetbrains.kotlin.fir.resolve.SessionHolder
|
|
||||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.ImplicitBodyResolveComputationSession
|
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.element.builder.LLFirReturnTypeCalculatorWithJump
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.element.builder.LLFirReturnTypeCalculatorWithJump
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.LLFirLockProvider
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.transformers.LLImplicitBodyResolveComputationSession
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.LLFirSession
|
import org.jetbrains.kotlin.fir.analysis.checkers.context.PersistentCheckerContext
|
||||||
|
import org.jetbrains.kotlin.fir.resolve.SessionHolder
|
||||||
|
|
||||||
internal object PersistentCheckerContextFactory {
|
internal object PersistentCheckerContextFactory {
|
||||||
fun createEmptyPersistenceCheckerContext(sessionHolder: SessionHolder): PersistentCheckerContext {
|
fun createEmptyPersistenceCheckerContext(sessionHolder: SessionHolder): PersistentCheckerContext {
|
||||||
val returnTypeCalculator = LLFirReturnTypeCalculatorWithJump(
|
val returnTypeCalculator = LLFirReturnTypeCalculatorWithJump(
|
||||||
scopeSession = sessionHolder.scopeSession,
|
scopeSession = sessionHolder.scopeSession,
|
||||||
implicitBodyResolveComputationSession = ImplicitBodyResolveComputationSession(),
|
implicitBodyResolveComputationSession = LLImplicitBodyResolveComputationSession(),
|
||||||
lockProvider = LLFirGlobalResolveComponents.getInstance(sessionHolder.session).lockProvider,
|
lockProvider = LLFirGlobalResolveComponents.getInstance(sessionHolder.session).lockProvider,
|
||||||
towerDataContextCollector = null,
|
towerDataContextCollector = null,
|
||||||
)
|
)
|
||||||
|
|||||||
+2
-3
@@ -19,7 +19,6 @@ import org.jetbrains.kotlin.fir.resolve.ResolutionMode
|
|||||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirAbstractBodyResolveTransformerDispatcher
|
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirAbstractBodyResolveTransformerDispatcher
|
||||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirResolveContextCollector
|
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirResolveContextCollector
|
||||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.ImplicitBodyResolveComputationSession
|
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||||
import org.jetbrains.kotlin.fir.visitors.transformSingle
|
import org.jetbrains.kotlin.fir.visitors.transformSingle
|
||||||
|
|
||||||
@@ -28,14 +27,14 @@ internal abstract class LLFirAbstractBodyTargetResolver(
|
|||||||
lockProvider: LLFirLockProvider,
|
lockProvider: LLFirLockProvider,
|
||||||
private val scopeSession: ScopeSession,
|
private val scopeSession: ScopeSession,
|
||||||
resolvePhase: FirResolvePhase,
|
resolvePhase: FirResolvePhase,
|
||||||
protected val implicitBodyResolveComputationSession: ImplicitBodyResolveComputationSession = ImplicitBodyResolveComputationSession(),
|
protected val llImplicitBodyResolveComputationSession: LLImplicitBodyResolveComputationSession = LLImplicitBodyResolveComputationSession(),
|
||||||
isJumpingPhase: Boolean = false,
|
isJumpingPhase: Boolean = false,
|
||||||
) : LLFirTargetResolver(resolveTarget, lockProvider, resolvePhase, isJumpingPhase) {
|
) : LLFirTargetResolver(resolveTarget, lockProvider, resolvePhase, isJumpingPhase) {
|
||||||
protected fun createReturnTypeCalculator(
|
protected fun createReturnTypeCalculator(
|
||||||
firResolveContextCollector: FirResolveContextCollector?,
|
firResolveContextCollector: FirResolveContextCollector?,
|
||||||
): LLFirReturnTypeCalculatorWithJump = LLFirReturnTypeCalculatorWithJump(
|
): LLFirReturnTypeCalculatorWithJump = LLFirReturnTypeCalculatorWithJump(
|
||||||
scopeSession,
|
scopeSession,
|
||||||
implicitBodyResolveComputationSession,
|
llImplicitBodyResolveComputationSession,
|
||||||
lockProvider,
|
lockProvider,
|
||||||
firResolveContextCollector,
|
firResolveContextCollector,
|
||||||
)
|
)
|
||||||
|
|||||||
+5
-3
@@ -40,24 +40,26 @@ internal object LLFirImplicitTypesLazyResolver : LLFirLazyResolver(FirResolvePha
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal class LLImplicitBodyResolveComputationSession : ImplicitBodyResolveComputationSession()
|
||||||
|
|
||||||
internal class LLFirImplicitBodyTargetResolver(
|
internal class LLFirImplicitBodyTargetResolver(
|
||||||
target: LLFirResolveTarget,
|
target: LLFirResolveTarget,
|
||||||
lockProvider: LLFirLockProvider,
|
lockProvider: LLFirLockProvider,
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
scopeSession: ScopeSession,
|
scopeSession: ScopeSession,
|
||||||
firResolveContextCollector: FirResolveContextCollector?,
|
firResolveContextCollector: FirResolveContextCollector?,
|
||||||
implicitBodyResolveComputationSession: ImplicitBodyResolveComputationSession? = null,
|
llImplicitBodyResolveComputationSessionParameter: LLImplicitBodyResolveComputationSession? = null,
|
||||||
) : LLFirAbstractBodyTargetResolver(
|
) : LLFirAbstractBodyTargetResolver(
|
||||||
target,
|
target,
|
||||||
lockProvider,
|
lockProvider,
|
||||||
scopeSession,
|
scopeSession,
|
||||||
FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE,
|
FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE,
|
||||||
implicitBodyResolveComputationSession = implicitBodyResolveComputationSession ?: ImplicitBodyResolveComputationSession(),
|
llImplicitBodyResolveComputationSession = llImplicitBodyResolveComputationSessionParameter ?: LLImplicitBodyResolveComputationSession(),
|
||||||
isJumpingPhase = true,
|
isJumpingPhase = true,
|
||||||
) {
|
) {
|
||||||
override val transformer = object : FirImplicitAwareBodyResolveTransformer(
|
override val transformer = object : FirImplicitAwareBodyResolveTransformer(
|
||||||
session,
|
session,
|
||||||
implicitBodyResolveComputationSession = this.implicitBodyResolveComputationSession,
|
implicitBodyResolveComputationSession = llImplicitBodyResolveComputationSession,
|
||||||
phase = resolverPhase,
|
phase = resolverPhase,
|
||||||
implicitTypeOnly = true,
|
implicitTypeOnly = true,
|
||||||
scopeSession = scopeSession,
|
scopeSession = scopeSession,
|
||||||
|
|||||||
+3
-3
@@ -10,10 +10,10 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.api.targets.asResolveTarg
|
|||||||
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.transformers.LLFirImplicitBodyTargetResolver
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.transformers.LLFirImplicitBodyTargetResolver
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.transformers.LLFirImplicitTypesLazyResolver
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.transformers.LLFirImplicitTypesLazyResolver
|
||||||
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.transformers.LLImplicitBodyResolveComputationSession
|
||||||
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
|
||||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.ImplicitBodyResolveComputationSession
|
|
||||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.ReturnTypeCalculatorWithJump
|
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.ReturnTypeCalculatorWithJump
|
||||||
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
|
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
|
||||||
import org.jetbrains.kotlin.fir.types.FirImplicitTypeRef
|
import org.jetbrains.kotlin.fir.types.FirImplicitTypeRef
|
||||||
@@ -21,7 +21,7 @@ import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
|
|||||||
|
|
||||||
internal class LLFirReturnTypeCalculatorWithJump(
|
internal class LLFirReturnTypeCalculatorWithJump(
|
||||||
scopeSession: ScopeSession,
|
scopeSession: ScopeSession,
|
||||||
implicitBodyResolveComputationSession: ImplicitBodyResolveComputationSession,
|
implicitBodyResolveComputationSession: LLImplicitBodyResolveComputationSession,
|
||||||
private val lockProvider: LLFirLockProvider,
|
private val lockProvider: LLFirLockProvider,
|
||||||
private val towerDataContextCollector: FirResolveContextCollector?,
|
private val towerDataContextCollector: FirResolveContextCollector?,
|
||||||
) : ReturnTypeCalculatorWithJump(scopeSession, implicitBodyResolveComputationSession) {
|
) : ReturnTypeCalculatorWithJump(scopeSession, implicitBodyResolveComputationSession) {
|
||||||
@@ -39,7 +39,7 @@ internal class LLFirReturnTypeCalculatorWithJump(
|
|||||||
session = declaration.moduleData.session,
|
session = declaration.moduleData.session,
|
||||||
scopeSession = scopeSession,
|
scopeSession = scopeSession,
|
||||||
firResolveContextCollector = towerDataContextCollector,
|
firResolveContextCollector = towerDataContextCollector,
|
||||||
implicitBodyResolveComputationSession = implicitBodyResolveComputationSession,
|
llImplicitBodyResolveComputationSessionParameter = implicitBodyResolveComputationSession as LLImplicitBodyResolveComputationSession,
|
||||||
)
|
)
|
||||||
|
|
||||||
lockProvider.withGlobalPhaseLock(FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE) {
|
lockProvider.withGlobalPhaseLock(FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE) {
|
||||||
|
|||||||
Reference in New Issue
Block a user