[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
|
||||
|
||||
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.file.builder.LLFirLockProvider
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.LLFirSession
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.transformers.LLImplicitBodyResolveComputationSession
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.context.PersistentCheckerContext
|
||||
import org.jetbrains.kotlin.fir.resolve.SessionHolder
|
||||
|
||||
internal object PersistentCheckerContextFactory {
|
||||
fun createEmptyPersistenceCheckerContext(sessionHolder: SessionHolder): PersistentCheckerContext {
|
||||
val returnTypeCalculator = LLFirReturnTypeCalculatorWithJump(
|
||||
scopeSession = sessionHolder.scopeSession,
|
||||
implicitBodyResolveComputationSession = ImplicitBodyResolveComputationSession(),
|
||||
implicitBodyResolveComputationSession = LLImplicitBodyResolveComputationSession(),
|
||||
lockProvider = LLFirGlobalResolveComponents.getInstance(sessionHolder.session).lockProvider,
|
||||
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.transformers.body.resolve.FirAbstractBodyResolveTransformerDispatcher
|
||||
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.transformSingle
|
||||
|
||||
@@ -28,14 +27,14 @@ internal abstract class LLFirAbstractBodyTargetResolver(
|
||||
lockProvider: LLFirLockProvider,
|
||||
private val scopeSession: ScopeSession,
|
||||
resolvePhase: FirResolvePhase,
|
||||
protected val implicitBodyResolveComputationSession: ImplicitBodyResolveComputationSession = ImplicitBodyResolveComputationSession(),
|
||||
protected val llImplicitBodyResolveComputationSession: LLImplicitBodyResolveComputationSession = LLImplicitBodyResolveComputationSession(),
|
||||
isJumpingPhase: Boolean = false,
|
||||
) : LLFirTargetResolver(resolveTarget, lockProvider, resolvePhase, isJumpingPhase) {
|
||||
protected fun createReturnTypeCalculator(
|
||||
firResolveContextCollector: FirResolveContextCollector?,
|
||||
): LLFirReturnTypeCalculatorWithJump = LLFirReturnTypeCalculatorWithJump(
|
||||
scopeSession,
|
||||
implicitBodyResolveComputationSession,
|
||||
llImplicitBodyResolveComputationSession,
|
||||
lockProvider,
|
||||
firResolveContextCollector,
|
||||
)
|
||||
|
||||
+5
-3
@@ -40,24 +40,26 @@ internal object LLFirImplicitTypesLazyResolver : LLFirLazyResolver(FirResolvePha
|
||||
}
|
||||
}
|
||||
|
||||
internal class LLImplicitBodyResolveComputationSession : ImplicitBodyResolveComputationSession()
|
||||
|
||||
internal class LLFirImplicitBodyTargetResolver(
|
||||
target: LLFirResolveTarget,
|
||||
lockProvider: LLFirLockProvider,
|
||||
session: FirSession,
|
||||
scopeSession: ScopeSession,
|
||||
firResolveContextCollector: FirResolveContextCollector?,
|
||||
implicitBodyResolveComputationSession: ImplicitBodyResolveComputationSession? = null,
|
||||
llImplicitBodyResolveComputationSessionParameter: LLImplicitBodyResolveComputationSession? = null,
|
||||
) : LLFirAbstractBodyTargetResolver(
|
||||
target,
|
||||
lockProvider,
|
||||
scopeSession,
|
||||
FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE,
|
||||
implicitBodyResolveComputationSession = implicitBodyResolveComputationSession ?: ImplicitBodyResolveComputationSession(),
|
||||
llImplicitBodyResolveComputationSession = llImplicitBodyResolveComputationSessionParameter ?: LLImplicitBodyResolveComputationSession(),
|
||||
isJumpingPhase = true,
|
||||
) {
|
||||
override val transformer = object : FirImplicitAwareBodyResolveTransformer(
|
||||
session,
|
||||
implicitBodyResolveComputationSession = this.implicitBodyResolveComputationSession,
|
||||
implicitBodyResolveComputationSession = llImplicitBodyResolveComputationSession,
|
||||
phase = resolverPhase,
|
||||
implicitTypeOnly = true,
|
||||
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.transformers.LLFirImplicitBodyTargetResolver
|
||||
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.resolve.ScopeSession
|
||||
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.symbols.lazyResolveToPhase
|
||||
import org.jetbrains.kotlin.fir.types.FirImplicitTypeRef
|
||||
@@ -21,7 +21,7 @@ import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
|
||||
|
||||
internal class LLFirReturnTypeCalculatorWithJump(
|
||||
scopeSession: ScopeSession,
|
||||
implicitBodyResolveComputationSession: ImplicitBodyResolveComputationSession,
|
||||
implicitBodyResolveComputationSession: LLImplicitBodyResolveComputationSession,
|
||||
private val lockProvider: LLFirLockProvider,
|
||||
private val towerDataContextCollector: FirResolveContextCollector?,
|
||||
) : ReturnTypeCalculatorWithJump(scopeSession, implicitBodyResolveComputationSession) {
|
||||
@@ -39,7 +39,7 @@ internal class LLFirReturnTypeCalculatorWithJump(
|
||||
session = declaration.moduleData.session,
|
||||
scopeSession = scopeSession,
|
||||
firResolveContextCollector = towerDataContextCollector,
|
||||
implicitBodyResolveComputationSession = implicitBodyResolveComputationSession,
|
||||
llImplicitBodyResolveComputationSessionParameter = implicitBodyResolveComputationSession as LLImplicitBodyResolveComputationSession,
|
||||
)
|
||||
|
||||
lockProvider.withGlobalPhaseLock(FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE) {
|
||||
|
||||
Reference in New Issue
Block a user