[LL FIR] LLFirLazyResolver: drop LLFirLockProvider parameter
It can be inferred from `LLFirResolveTarget` inside `LLFirTargetResolver`
This commit is contained in:
committed by
Space Team
parent
efeffb45b7
commit
68e5fc7344
-2
@@ -5,7 +5,6 @@
|
|||||||
|
|
||||||
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.element.builder.LLFirReturnTypeCalculatorWithJump
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.element.builder.LLFirReturnTypeCalculatorWithJump
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.transformers.LLImplicitBodyResolveComputationSession
|
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.analysis.checkers.context.PersistentCheckerContext
|
||||||
@@ -16,7 +15,6 @@ internal object PersistentCheckerContextFactory {
|
|||||||
val returnTypeCalculator = LLFirReturnTypeCalculatorWithJump(
|
val returnTypeCalculator = LLFirReturnTypeCalculatorWithJump(
|
||||||
scopeSession = sessionHolder.scopeSession,
|
scopeSession = sessionHolder.scopeSession,
|
||||||
implicitBodyResolveComputationSession = LLImplicitBodyResolveComputationSession(),
|
implicitBodyResolveComputationSession = LLImplicitBodyResolveComputationSession(),
|
||||||
lockProvider = LLFirGlobalResolveComponents.getInstance(sessionHolder.session).lockProvider,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
return PersistentCheckerContext(sessionHolder, returnTypeCalculator)
|
return PersistentCheckerContext(sessionHolder, returnTypeCalculator)
|
||||||
|
|||||||
+1
-4
@@ -8,7 +8,6 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir.transformers
|
|||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.FirDesignation
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.FirDesignation
|
||||||
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.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.lazy.resolve.FirLazyBodiesCalculator
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve.FirLazyBodiesCalculator
|
||||||
import org.jetbrains.kotlin.fir.FirElementWithResolveState
|
import org.jetbrains.kotlin.fir.FirElementWithResolveState
|
||||||
import org.jetbrains.kotlin.fir.declarations.*
|
import org.jetbrains.kotlin.fir.declarations.*
|
||||||
@@ -18,15 +17,13 @@ import org.jetbrains.kotlin.fir.visitors.transformSingle
|
|||||||
|
|
||||||
internal abstract class LLFirAbstractBodyTargetResolver(
|
internal abstract class LLFirAbstractBodyTargetResolver(
|
||||||
resolveTarget: LLFirResolveTarget,
|
resolveTarget: LLFirResolveTarget,
|
||||||
lockProvider: LLFirLockProvider,
|
|
||||||
resolvePhase: FirResolvePhase,
|
resolvePhase: FirResolvePhase,
|
||||||
protected val llImplicitBodyResolveComputationSession: LLImplicitBodyResolveComputationSession = LLImplicitBodyResolveComputationSession(),
|
protected val llImplicitBodyResolveComputationSession: LLImplicitBodyResolveComputationSession = LLImplicitBodyResolveComputationSession(),
|
||||||
isJumpingPhase: Boolean = false,
|
isJumpingPhase: Boolean = false,
|
||||||
) : LLFirTargetResolver(resolveTarget, lockProvider, resolvePhase, isJumpingPhase) {
|
) : LLFirTargetResolver(resolveTarget, resolvePhase, isJumpingPhase) {
|
||||||
protected fun createReturnTypeCalculator(): LLFirReturnTypeCalculatorWithJump = LLFirReturnTypeCalculatorWithJump(
|
protected fun createReturnTypeCalculator(): LLFirReturnTypeCalculatorWithJump = LLFirReturnTypeCalculatorWithJump(
|
||||||
resolveTargetScopeSession,
|
resolveTargetScopeSession,
|
||||||
llImplicitBodyResolveComputationSession,
|
llImplicitBodyResolveComputationSession,
|
||||||
lockProvider,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
abstract val transformer: FirAbstractBodyResolveTransformerDispatcher
|
abstract val transformer: FirAbstractBodyResolveTransformerDispatcher
|
||||||
|
|||||||
+2
-10
@@ -7,7 +7,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.api.throwUnexpectedFirElementError
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.throwUnexpectedFirElementError
|
||||||
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.sessions.llFirSession
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.llFirSession
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.AnnotationVisitorVoid
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.AnnotationVisitorVoid
|
||||||
@@ -29,10 +28,7 @@ import org.jetbrains.kotlin.fir.visitors.FirVisitorVoid
|
|||||||
import org.jetbrains.kotlin.fir.visitors.transformSingle
|
import org.jetbrains.kotlin.fir.visitors.transformSingle
|
||||||
|
|
||||||
internal object LLFirAnnotationArgumentsLazyResolver : LLFirLazyResolver(FirResolvePhase.ANNOTATION_ARGUMENTS) {
|
internal object LLFirAnnotationArgumentsLazyResolver : LLFirLazyResolver(FirResolvePhase.ANNOTATION_ARGUMENTS) {
|
||||||
override fun createTargetResolver(
|
override fun createTargetResolver(target: LLFirResolveTarget): LLFirTargetResolver = LLFirAnnotationArgumentsTargetResolver(target)
|
||||||
target: LLFirResolveTarget,
|
|
||||||
lockProvider: LLFirLockProvider,
|
|
||||||
): LLFirTargetResolver = LLFirAnnotationArgumentsTargetResolver(target, lockProvider)
|
|
||||||
|
|
||||||
override fun phaseSpecificCheckIsResolved(target: FirElementWithResolveState) {
|
override fun phaseSpecificCheckIsResolved(target: FirElementWithResolveState) {
|
||||||
if (target !is FirAnnotationContainer) return
|
if (target !is FirAnnotationContainer) return
|
||||||
@@ -71,12 +67,8 @@ internal object LLFirAnnotationArgumentsLazyResolver : LLFirLazyResolver(FirReso
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private class LLFirAnnotationArgumentsTargetResolver(
|
private class LLFirAnnotationArgumentsTargetResolver(resolveTarget: LLFirResolveTarget) : LLFirAbstractBodyTargetResolver(
|
||||||
resolveTarget: LLFirResolveTarget,
|
|
||||||
lockProvider: LLFirLockProvider,
|
|
||||||
) : LLFirAbstractBodyTargetResolver(
|
|
||||||
resolveTarget,
|
resolveTarget,
|
||||||
lockProvider,
|
|
||||||
FirResolvePhase.ANNOTATION_ARGUMENTS,
|
FirResolvePhase.ANNOTATION_ARGUMENTS,
|
||||||
) {
|
) {
|
||||||
/**
|
/**
|
||||||
|
|||||||
+2
-10
@@ -11,7 +11,6 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.api.getModule
|
|||||||
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.throwUnexpectedFirElementError
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.throwUnexpectedFirElementError
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.compile.codeFragmentScopeProvider
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.compile.codeFragmentScopeProvider
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.LLFirLockProvider
|
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.file.structure.LLFirDeclarationModificationService
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.file.structure.LLFirDeclarationModificationService
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.llFirModuleData
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.llFirModuleData
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.state.LLFirResolvableResolveSession
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.state.LLFirResolvableResolveSession
|
||||||
@@ -51,10 +50,7 @@ import org.jetbrains.kotlin.utils.exceptions.errorWithAttachment
|
|||||||
import org.jetbrains.kotlin.utils.exceptions.withPsiEntry
|
import org.jetbrains.kotlin.utils.exceptions.withPsiEntry
|
||||||
|
|
||||||
internal object LLFirBodyLazyResolver : LLFirLazyResolver(FirResolvePhase.BODY_RESOLVE) {
|
internal object LLFirBodyLazyResolver : LLFirLazyResolver(FirResolvePhase.BODY_RESOLVE) {
|
||||||
override fun createTargetResolver(
|
override fun createTargetResolver(target: LLFirResolveTarget): LLFirTargetResolver = LLFirBodyTargetResolver(target)
|
||||||
target: LLFirResolveTarget,
|
|
||||||
lockProvider: LLFirLockProvider,
|
|
||||||
): LLFirTargetResolver = LLFirBodyTargetResolver(target, lockProvider)
|
|
||||||
|
|
||||||
override fun phaseSpecificCheckIsResolved(target: FirElementWithResolveState) {
|
override fun phaseSpecificCheckIsResolved(target: FirElementWithResolveState) {
|
||||||
when (target) {
|
when (target) {
|
||||||
@@ -69,12 +65,8 @@ internal object LLFirBodyLazyResolver : LLFirLazyResolver(FirResolvePhase.BODY_R
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private class LLFirBodyTargetResolver(
|
private class LLFirBodyTargetResolver(target: LLFirResolveTarget) : LLFirAbstractBodyTargetResolver(
|
||||||
target: LLFirResolveTarget,
|
|
||||||
lockProvider: LLFirLockProvider,
|
|
||||||
) : LLFirAbstractBodyTargetResolver(
|
|
||||||
target,
|
target,
|
||||||
lockProvider,
|
|
||||||
FirResolvePhase.BODY_RESOLVE,
|
FirResolvePhase.BODY_RESOLVE,
|
||||||
) {
|
) {
|
||||||
override val transformer = object : FirBodyResolveTransformer(
|
override val transformer = object : FirBodyResolveTransformer(
|
||||||
|
|||||||
+2
-6
@@ -9,7 +9,6 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.api.collectDesignation
|
|||||||
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.asResolveTarget
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.targets.asResolveTarget
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.throwUnexpectedFirElementError
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.throwUnexpectedFirElementError
|
||||||
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.sessions.llFirSession
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.llFirSession
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkDeprecationProviderIsResolved
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkDeprecationProviderIsResolved
|
||||||
@@ -34,8 +33,7 @@ import org.jetbrains.kotlin.util.PrivateForInline
|
|||||||
internal object LLFirCompilerAnnotationsLazyResolver : LLFirLazyResolver(FirResolvePhase.COMPILER_REQUIRED_ANNOTATIONS) {
|
internal object LLFirCompilerAnnotationsLazyResolver : LLFirLazyResolver(FirResolvePhase.COMPILER_REQUIRED_ANNOTATIONS) {
|
||||||
override fun createTargetResolver(
|
override fun createTargetResolver(
|
||||||
target: LLFirResolveTarget,
|
target: LLFirResolveTarget,
|
||||||
lockProvider: LLFirLockProvider,
|
): LLFirTargetResolver = LLFirCompilerRequiredAnnotationsTargetResolver(target)
|
||||||
): LLFirTargetResolver = LLFirCompilerRequiredAnnotationsTargetResolver(target, lockProvider)
|
|
||||||
|
|
||||||
override fun phaseSpecificCheckIsResolved(target: FirElementWithResolveState) {
|
override fun phaseSpecificCheckIsResolved(target: FirElementWithResolveState) {
|
||||||
when (target) {
|
when (target) {
|
||||||
@@ -47,9 +45,8 @@ internal object LLFirCompilerAnnotationsLazyResolver : LLFirLazyResolver(FirReso
|
|||||||
|
|
||||||
private class LLFirCompilerRequiredAnnotationsTargetResolver(
|
private class LLFirCompilerRequiredAnnotationsTargetResolver(
|
||||||
target: LLFirResolveTarget,
|
target: LLFirResolveTarget,
|
||||||
lockProvider: LLFirLockProvider,
|
|
||||||
computationSession: LLFirCompilerRequiredAnnotationsComputationSession? = null,
|
computationSession: LLFirCompilerRequiredAnnotationsComputationSession? = null,
|
||||||
) : LLFirTargetResolver(target, lockProvider, FirResolvePhase.COMPILER_REQUIRED_ANNOTATIONS, isJumpingPhase = false) {
|
) : LLFirTargetResolver(target, FirResolvePhase.COMPILER_REQUIRED_ANNOTATIONS, isJumpingPhase = false) {
|
||||||
inner class LLFirCompilerRequiredAnnotationsComputationSession : CompilerRequiredAnnotationsComputationSession() {
|
inner class LLFirCompilerRequiredAnnotationsComputationSession : CompilerRequiredAnnotationsComputationSession() {
|
||||||
override fun resolveAnnotationSymbol(symbol: FirRegularClassSymbol, scopeSession: ScopeSession) {
|
override fun resolveAnnotationSymbol(symbol: FirRegularClassSymbol, scopeSession: ScopeSession) {
|
||||||
val regularClass = symbol.fir
|
val regularClass = symbol.fir
|
||||||
@@ -59,7 +56,6 @@ private class LLFirCompilerRequiredAnnotationsTargetResolver(
|
|||||||
val designation = regularClass.collectDesignation().asResolveTarget()
|
val designation = regularClass.collectDesignation().asResolveTarget()
|
||||||
val resolver = LLFirCompilerRequiredAnnotationsTargetResolver(
|
val resolver = LLFirCompilerRequiredAnnotationsTargetResolver(
|
||||||
designation,
|
designation,
|
||||||
lockProvider,
|
|
||||||
this,
|
this,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
+2
-10
@@ -8,7 +8,6 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir.transformers
|
|||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.FirDesignation
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.FirDesignation
|
||||||
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.throwUnexpectedFirElementError
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.throwUnexpectedFirElementError
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.LLFirLockProvider
|
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.blockGuard
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.blockGuard
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkContractDescriptionIsResolved
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkContractDescriptionIsResolved
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.isCallableWithSpecialBody
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.isCallableWithSpecialBody
|
||||||
@@ -22,10 +21,7 @@ import org.jetbrains.kotlin.fir.resolve.transformers.contracts.FirContractResolv
|
|||||||
import org.jetbrains.kotlin.fir.types.FirImplicitTypeRef
|
import org.jetbrains.kotlin.fir.types.FirImplicitTypeRef
|
||||||
|
|
||||||
internal object LLFirContractsLazyResolver : LLFirLazyResolver(FirResolvePhase.CONTRACTS) {
|
internal object LLFirContractsLazyResolver : LLFirLazyResolver(FirResolvePhase.CONTRACTS) {
|
||||||
override fun createTargetResolver(
|
override fun createTargetResolver(target: LLFirResolveTarget): LLFirTargetResolver = LLFirContractsTargetResolver(target)
|
||||||
target: LLFirResolveTarget,
|
|
||||||
lockProvider: LLFirLockProvider,
|
|
||||||
): LLFirTargetResolver = LLFirContractsTargetResolver(target, lockProvider)
|
|
||||||
|
|
||||||
override fun phaseSpecificCheckIsResolved(target: FirElementWithResolveState) {
|
override fun phaseSpecificCheckIsResolved(target: FirElementWithResolveState) {
|
||||||
if (target !is FirContractDescriptionOwner) return
|
if (target !is FirContractDescriptionOwner) return
|
||||||
@@ -33,12 +29,8 @@ internal object LLFirContractsLazyResolver : LLFirLazyResolver(FirResolvePhase.C
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private class LLFirContractsTargetResolver(
|
private class LLFirContractsTargetResolver(target: LLFirResolveTarget) : LLFirAbstractBodyTargetResolver(
|
||||||
target: LLFirResolveTarget,
|
|
||||||
lockProvider: LLFirLockProvider,
|
|
||||||
) : LLFirAbstractBodyTargetResolver(
|
|
||||||
target,
|
target,
|
||||||
lockProvider,
|
|
||||||
FirResolvePhase.CONTRACTS,
|
FirResolvePhase.CONTRACTS,
|
||||||
) {
|
) {
|
||||||
override val transformer = FirContractResolveTransformer(resolveTargetSession, resolveTargetScopeSession)
|
override val transformer = FirContractResolveTransformer(resolveTargetSession, resolveTargetScopeSession)
|
||||||
|
|||||||
+5
-9
@@ -6,7 +6,6 @@
|
|||||||
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.file.builder.LLFirLockProvider
|
|
||||||
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
|
||||||
@@ -18,10 +17,7 @@ import org.jetbrains.kotlin.fir.resolve.transformers.mpp.FirExpectActualMatcherT
|
|||||||
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
|
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
|
||||||
|
|
||||||
internal object LLFirExpectActualMatcherLazyResolver : LLFirLazyResolver(FirResolvePhase.EXPECT_ACTUAL_MATCHING) {
|
internal object LLFirExpectActualMatcherLazyResolver : LLFirLazyResolver(FirResolvePhase.EXPECT_ACTUAL_MATCHING) {
|
||||||
override fun createTargetResolver(
|
override fun createTargetResolver(target: LLFirResolveTarget): LLFirTargetResolver = LLFirExpectActualMatchingTargetResolver(target)
|
||||||
target: LLFirResolveTarget,
|
|
||||||
lockProvider: LLFirLockProvider,
|
|
||||||
): LLFirTargetResolver = LLFirExpectActualMatchingTargetResolver(target, lockProvider)
|
|
||||||
|
|
||||||
override fun phaseSpecificCheckIsResolved(target: FirElementWithResolveState) {
|
override fun phaseSpecificCheckIsResolved(target: FirElementWithResolveState) {
|
||||||
if (target.moduleData.session.languageVersionSettings.supportsFeature(LanguageFeature.MultiPlatformProjects) &&
|
if (target.moduleData.session.languageVersionSettings.supportsFeature(LanguageFeature.MultiPlatformProjects) &&
|
||||||
@@ -33,10 +29,10 @@ internal object LLFirExpectActualMatcherLazyResolver : LLFirLazyResolver(FirReso
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private class LLFirExpectActualMatchingTargetResolver(
|
private class LLFirExpectActualMatchingTargetResolver(target: LLFirResolveTarget) : LLFirTargetResolver(
|
||||||
target: LLFirResolveTarget,
|
target,
|
||||||
lockProvider: LLFirLockProvider,
|
FirResolvePhase.EXPECT_ACTUAL_MATCHING
|
||||||
) : LLFirTargetResolver(target, lockProvider, FirResolvePhase.EXPECT_ACTUAL_MATCHING) {
|
) {
|
||||||
private val enabled = resolveTargetSession.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)
|
||||||
|
|||||||
+5
-9
@@ -6,25 +6,21 @@
|
|||||||
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.file.builder.LLFirLockProvider
|
|
||||||
import org.jetbrains.kotlin.fir.FirElementWithResolveState
|
import org.jetbrains.kotlin.fir.FirElementWithResolveState
|
||||||
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.transformers.plugin.FirCompanionGenerationTransformer
|
import org.jetbrains.kotlin.fir.resolve.transformers.plugin.FirCompanionGenerationTransformer
|
||||||
|
|
||||||
internal object LLFirGeneratedCompanionObjectLazyResolver : LLFirLazyResolver(FirResolvePhase.COMPANION_GENERATION) {
|
internal object LLFirGeneratedCompanionObjectLazyResolver : LLFirLazyResolver(FirResolvePhase.COMPANION_GENERATION) {
|
||||||
override fun createTargetResolver(
|
override fun createTargetResolver(target: LLFirResolveTarget): LLFirTargetResolver = LLFirCompanionGenerationTargetResolver(target)
|
||||||
target: LLFirResolveTarget,
|
|
||||||
lockProvider: LLFirLockProvider,
|
|
||||||
): LLFirTargetResolver = LLFirCompanionGenerationTargetResolver(target, lockProvider)
|
|
||||||
|
|
||||||
override fun phaseSpecificCheckIsResolved(target: FirElementWithResolveState) {}
|
override fun phaseSpecificCheckIsResolved(target: FirElementWithResolveState) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
private class LLFirCompanionGenerationTargetResolver(
|
private class LLFirCompanionGenerationTargetResolver(target: LLFirResolveTarget) : LLFirTargetResolver(
|
||||||
target: LLFirResolveTarget,
|
target,
|
||||||
lockProvider: LLFirLockProvider,
|
FirResolvePhase.COMPANION_GENERATION,
|
||||||
) : LLFirTargetResolver(target, lockProvider, FirResolvePhase.COMPANION_GENERATION) {
|
) {
|
||||||
private val transformer: FirCompanionGenerationTransformer = FirCompanionGenerationTransformer(resolveTargetSession)
|
private val transformer: FirCompanionGenerationTransformer = FirCompanionGenerationTransformer(resolveTargetSession)
|
||||||
|
|
||||||
override fun doLazyResolveUnderLock(target: FirElementWithResolveState) {
|
override fun doLazyResolveUnderLock(target: FirElementWithResolveState) {
|
||||||
|
|||||||
+1
-7
@@ -7,7 +7,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.api.throwUnexpectedFirElementError
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.throwUnexpectedFirElementError
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.LLFirLockProvider
|
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.file.structure.LLFirDeclarationModificationService
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.file.structure.LLFirDeclarationModificationService
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkReturnTypeRefIsResolved
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkReturnTypeRefIsResolved
|
||||||
import org.jetbrains.kotlin.fir.FirElementWithResolveState
|
import org.jetbrains.kotlin.fir.FirElementWithResolveState
|
||||||
@@ -27,10 +26,7 @@ import org.jetbrains.kotlin.utils.exceptions.errorWithAttachment
|
|||||||
import org.jetbrains.kotlin.utils.exceptions.requireWithAttachment
|
import org.jetbrains.kotlin.utils.exceptions.requireWithAttachment
|
||||||
|
|
||||||
internal object LLFirImplicitTypesLazyResolver : LLFirLazyResolver(FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE) {
|
internal object LLFirImplicitTypesLazyResolver : LLFirLazyResolver(FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE) {
|
||||||
override fun createTargetResolver(
|
override fun createTargetResolver(target: LLFirResolveTarget): LLFirTargetResolver = LLFirImplicitBodyTargetResolver(target)
|
||||||
target: LLFirResolveTarget,
|
|
||||||
lockProvider: LLFirLockProvider,
|
|
||||||
): LLFirTargetResolver = LLFirImplicitBodyTargetResolver(target, lockProvider)
|
|
||||||
|
|
||||||
override fun phaseSpecificCheckIsResolved(target: FirElementWithResolveState) {
|
override fun phaseSpecificCheckIsResolved(target: FirElementWithResolveState) {
|
||||||
if (target !is FirCallableDeclaration) return
|
if (target !is FirCallableDeclaration) return
|
||||||
@@ -123,11 +119,9 @@ internal class LLImplicitBodyResolveComputationSession : ImplicitBodyResolveComp
|
|||||||
|
|
||||||
internal class LLFirImplicitBodyTargetResolver(
|
internal class LLFirImplicitBodyTargetResolver(
|
||||||
target: LLFirResolveTarget,
|
target: LLFirResolveTarget,
|
||||||
lockProvider: LLFirLockProvider,
|
|
||||||
llImplicitBodyResolveComputationSessionParameter: LLImplicitBodyResolveComputationSession? = null,
|
llImplicitBodyResolveComputationSessionParameter: LLImplicitBodyResolveComputationSession? = null,
|
||||||
) : LLFirAbstractBodyTargetResolver(
|
) : LLFirAbstractBodyTargetResolver(
|
||||||
target,
|
target,
|
||||||
lockProvider,
|
|
||||||
FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE,
|
FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE,
|
||||||
llImplicitBodyResolveComputationSession = llImplicitBodyResolveComputationSessionParameter ?: LLImplicitBodyResolveComputationSession(),
|
llImplicitBodyResolveComputationSession = llImplicitBodyResolveComputationSessionParameter ?: LLImplicitBodyResolveComputationSession(),
|
||||||
isJumpingPhase = true,
|
isJumpingPhase = true,
|
||||||
|
|||||||
+3
-7
@@ -6,7 +6,6 @@
|
|||||||
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.file.builder.LLFirLockProvider
|
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve.LLFirPhaseUpdater
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve.LLFirPhaseUpdater
|
||||||
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.FirElementWithResolveState
|
import org.jetbrains.kotlin.fir.FirElementWithResolveState
|
||||||
@@ -20,8 +19,8 @@ import org.jetbrains.kotlin.utils.exceptions.requireWithAttachment
|
|||||||
* @see LLFirTargetResolver
|
* @see LLFirTargetResolver
|
||||||
*/
|
*/
|
||||||
internal abstract class LLFirLazyResolver(val resolverPhase: FirResolvePhase) {
|
internal abstract class LLFirLazyResolver(val resolverPhase: FirResolvePhase) {
|
||||||
fun resolve(target: LLFirResolveTarget, lockProvider: LLFirLockProvider) {
|
fun resolve(target: LLFirResolveTarget) {
|
||||||
val resolver = createTargetResolver(target, lockProvider)
|
val resolver = createTargetResolver(target)
|
||||||
requireWithAttachment(
|
requireWithAttachment(
|
||||||
resolverPhase == resolver.resolverPhase,
|
resolverPhase == resolver.resolverPhase,
|
||||||
{
|
{
|
||||||
@@ -35,10 +34,7 @@ internal abstract class LLFirLazyResolver(val resolverPhase: FirResolvePhase) {
|
|||||||
resolver.resolveDesignation()
|
resolver.resolveDesignation()
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract fun createTargetResolver(
|
protected abstract fun createTargetResolver(target: LLFirResolveTarget): LLFirTargetResolver
|
||||||
target: LLFirResolveTarget,
|
|
||||||
lockProvider: LLFirLockProvider,
|
|
||||||
): LLFirTargetResolver
|
|
||||||
|
|
||||||
fun checkIsResolved(target: FirElementWithResolveState) {
|
fun checkIsResolved(target: FirElementWithResolveState) {
|
||||||
target.checkPhase(resolverPhase)
|
target.checkPhase(resolverPhase)
|
||||||
|
|||||||
+1
-1
@@ -19,7 +19,7 @@ internal object LLFirLazyResolverRunner {
|
|||||||
val lockProvider = LLFirGlobalResolveComponents.getInstance(target.session).lockProvider
|
val lockProvider = LLFirGlobalResolveComponents.getInstance(target.session).lockProvider
|
||||||
lockProvider.withGlobalLock {
|
lockProvider.withGlobalLock {
|
||||||
lockProvider.withGlobalPhaseLock(phase) {
|
lockProvider.withGlobalPhaseLock(phase) {
|
||||||
lazyResolver.resolve(target, lockProvider)
|
lazyResolver.resolve(target)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+3
-4
@@ -5,9 +5,10 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.analysis.low.level.api.fir.element.builder
|
package org.jetbrains.kotlin.analysis.low.level.api.fir.element.builder
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirGlobalResolveComponents
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.collectDesignation
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.collectDesignation
|
||||||
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.file.builder.LLFirLockProvider
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.targets.session
|
||||||
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.analysis.low.level.api.fir.transformers.LLImplicitBodyResolveComputationSession
|
||||||
@@ -21,7 +22,6 @@ import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
|
|||||||
internal class LLFirReturnTypeCalculatorWithJump(
|
internal class LLFirReturnTypeCalculatorWithJump(
|
||||||
scopeSession: ScopeSession,
|
scopeSession: ScopeSession,
|
||||||
implicitBodyResolveComputationSession: LLImplicitBodyResolveComputationSession,
|
implicitBodyResolveComputationSession: LLImplicitBodyResolveComputationSession,
|
||||||
private val lockProvider: LLFirLockProvider,
|
|
||||||
) : ReturnTypeCalculatorWithJump(scopeSession, implicitBodyResolveComputationSession) {
|
) : ReturnTypeCalculatorWithJump(scopeSession, implicitBodyResolveComputationSession) {
|
||||||
override fun resolveDeclaration(declaration: FirCallableDeclaration): FirResolvedTypeRef {
|
override fun resolveDeclaration(declaration: FirCallableDeclaration): FirResolvedTypeRef {
|
||||||
if (declaration.returnTypeRef !is FirImplicitTypeRef) {
|
if (declaration.returnTypeRef !is FirImplicitTypeRef) {
|
||||||
@@ -34,11 +34,10 @@ internal class LLFirReturnTypeCalculatorWithJump(
|
|||||||
val computationSession = implicitBodyResolveComputationSession as LLImplicitBodyResolveComputationSession
|
val computationSession = implicitBodyResolveComputationSession as LLImplicitBodyResolveComputationSession
|
||||||
val resolver = LLFirImplicitBodyTargetResolver(
|
val resolver = LLFirImplicitBodyTargetResolver(
|
||||||
designation,
|
designation,
|
||||||
lockProvider = lockProvider,
|
|
||||||
llImplicitBodyResolveComputationSessionParameter = computationSession,
|
llImplicitBodyResolveComputationSessionParameter = computationSession,
|
||||||
)
|
)
|
||||||
|
|
||||||
lockProvider.withGlobalPhaseLock(FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE) {
|
LLFirGlobalResolveComponents.getInstance(designation.session).lockProvider.withGlobalPhaseLock(FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE) {
|
||||||
resolver.resolveDesignation()
|
resolver.resolveDesignation()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+5
-7
@@ -6,24 +6,22 @@
|
|||||||
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.file.builder.LLFirLockProvider
|
|
||||||
import org.jetbrains.kotlin.fir.FirElementWithResolveState
|
import org.jetbrains.kotlin.fir.FirElementWithResolveState
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||||
|
|
||||||
internal object LLFirSealedClassInheritorsLazyResolver : LLFirLazyResolver(FirResolvePhase.SEALED_CLASS_INHERITORS) {
|
internal object LLFirSealedClassInheritorsLazyResolver : LLFirLazyResolver(FirResolvePhase.SEALED_CLASS_INHERITORS) {
|
||||||
override fun createTargetResolver(
|
override fun createTargetResolver(
|
||||||
target: LLFirResolveTarget,
|
target: LLFirResolveTarget,
|
||||||
lockProvider: LLFirLockProvider,
|
): LLFirTargetResolver = LLFirSealedClassInheritorsDesignatedResolver(target)
|
||||||
): LLFirTargetResolver = LLFirSealedClassInheritorsDesignatedResolver(target, lockProvider)
|
|
||||||
|
|
||||||
override fun phaseSpecificCheckIsResolved(target: FirElementWithResolveState) {}
|
override fun phaseSpecificCheckIsResolved(target: FirElementWithResolveState) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private class LLFirSealedClassInheritorsDesignatedResolver(
|
private class LLFirSealedClassInheritorsDesignatedResolver(target: LLFirResolveTarget) : LLFirTargetResolver(
|
||||||
target: LLFirResolveTarget,
|
target,
|
||||||
lockProvider: LLFirLockProvider,
|
FirResolvePhase.SEALED_CLASS_INHERITORS,
|
||||||
) : LLFirTargetResolver(target, lockProvider, FirResolvePhase.SEALED_CLASS_INHERITORS) {
|
) {
|
||||||
override fun doLazyResolveUnderLock(target: FirElementWithResolveState) {
|
override fun doLazyResolveUnderLock(target: FirElementWithResolveState) {
|
||||||
// just update the phase
|
// just update the phase
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-9
@@ -10,7 +10,6 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.api.targets.LLFirSingleRe
|
|||||||
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.targets.session
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.tryCollectDesignation
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.tryCollectDesignation
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.LLFirLockProvider
|
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkDeclarationStatusIsResolved
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkDeclarationStatusIsResolved
|
||||||
import org.jetbrains.kotlin.fir.FirElementWithResolveState
|
import org.jetbrains.kotlin.fir.FirElementWithResolveState
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
@@ -29,12 +28,8 @@ import org.jetbrains.kotlin.fir.visitors.transformSingle
|
|||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
internal object LLFirStatusLazyResolver : LLFirLazyResolver(FirResolvePhase.STATUS) {
|
internal object LLFirStatusLazyResolver : LLFirLazyResolver(FirResolvePhase.STATUS) {
|
||||||
override fun createTargetResolver(
|
override fun createTargetResolver(target: LLFirResolveTarget): LLFirTargetResolver = LLFirStatusTargetResolver(
|
||||||
target: LLFirResolveTarget,
|
|
||||||
lockProvider: LLFirLockProvider,
|
|
||||||
): LLFirTargetResolver = LLFirStatusTargetResolver(
|
|
||||||
target = target,
|
target = target,
|
||||||
lockProvider = lockProvider,
|
|
||||||
resolveMode = target.resolveMode(),
|
resolveMode = target.resolveMode(),
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -98,10 +93,9 @@ private class LLStatusComputationSession(val useSiteSession: FirSession) : Statu
|
|||||||
|
|
||||||
private class LLFirStatusTargetResolver(
|
private class LLFirStatusTargetResolver(
|
||||||
target: LLFirResolveTarget,
|
target: LLFirResolveTarget,
|
||||||
lockProvider: LLFirLockProvider,
|
|
||||||
private val statusComputationSession: LLStatusComputationSession = LLStatusComputationSession(target.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, FirResolvePhase.STATUS, isJumpingPhase = false) {
|
||||||
private val transformer = Transformer(resolveTargetSession, resolveTargetScopeSession)
|
private val transformer = Transformer(resolveTargetSession, resolveTargetScopeSession)
|
||||||
|
|
||||||
@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)
|
||||||
@@ -250,7 +244,6 @@ private class LLFirStatusTargetResolver(
|
|||||||
val target = regularClass.tryCollectDesignation()?.asResolveTarget() ?: return false
|
val target = regularClass.tryCollectDesignation()?.asResolveTarget() ?: return false
|
||||||
val resolver = LLFirStatusTargetResolver(
|
val resolver = LLFirStatusTargetResolver(
|
||||||
target,
|
target,
|
||||||
lockProvider,
|
|
||||||
computationSession,
|
computationSession,
|
||||||
resolveMode = resolveMode,
|
resolveMode = resolveMode,
|
||||||
)
|
)
|
||||||
|
|||||||
+2
-8
@@ -10,7 +10,6 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.api.targets.LLFirSingleRe
|
|||||||
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.targets.session
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.tryCollectDesignation
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.tryCollectDesignation
|
||||||
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
|
||||||
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.analysis.low.level.api.fir.util.checkTypeRefIsResolved
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkTypeRefIsResolved
|
||||||
@@ -32,10 +31,7 @@ import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
|
|||||||
import org.jetbrains.kotlin.fir.types.*
|
import org.jetbrains.kotlin.fir.types.*
|
||||||
|
|
||||||
internal object LLFirSupertypeLazyResolver : LLFirLazyResolver(FirResolvePhase.SUPER_TYPES) {
|
internal object LLFirSupertypeLazyResolver : LLFirLazyResolver(FirResolvePhase.SUPER_TYPES) {
|
||||||
override fun createTargetResolver(
|
override fun createTargetResolver(target: LLFirResolveTarget): LLFirTargetResolver = LLFirSuperTypeTargetResolver(target)
|
||||||
target: LLFirResolveTarget,
|
|
||||||
lockProvider: LLFirLockProvider,
|
|
||||||
): LLFirTargetResolver = LLFirSuperTypeTargetResolver(target, lockProvider)
|
|
||||||
|
|
||||||
override fun phaseSpecificCheckIsResolved(target: FirElementWithResolveState) {
|
override fun phaseSpecificCheckIsResolved(target: FirElementWithResolveState) {
|
||||||
when (target) {
|
when (target) {
|
||||||
@@ -54,10 +50,9 @@ internal object LLFirSupertypeLazyResolver : LLFirLazyResolver(FirResolvePhase.S
|
|||||||
|
|
||||||
private class LLFirSuperTypeTargetResolver(
|
private class LLFirSuperTypeTargetResolver(
|
||||||
target: LLFirResolveTarget,
|
target: LLFirResolveTarget,
|
||||||
lockProvider: LLFirLockProvider,
|
|
||||||
private val supertypeComputationSession: LLFirSupertypeComputationSession = LLFirSupertypeComputationSession(target.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, FirResolvePhase.SUPER_TYPES, isJumpingPhase = false) {
|
||||||
private val supertypeResolver = object : FirSupertypeResolverVisitor(
|
private val supertypeResolver = object : FirSupertypeResolverVisitor(
|
||||||
session = resolveTargetSession,
|
session = resolveTargetSession,
|
||||||
supertypeComputationSession = supertypeComputationSession,
|
supertypeComputationSession = supertypeComputationSession,
|
||||||
@@ -181,7 +176,6 @@ private class LLFirSuperTypeTargetResolver(
|
|||||||
private fun resolveToSupertypePhase(target: LLFirSingleResolveTarget) {
|
private fun resolveToSupertypePhase(target: LLFirSingleResolveTarget) {
|
||||||
LLFirSuperTypeTargetResolver(
|
LLFirSuperTypeTargetResolver(
|
||||||
target = target,
|
target = target,
|
||||||
lockProvider = lockProvider,
|
|
||||||
supertypeComputationSession = supertypeComputationSession,
|
supertypeComputationSession = supertypeComputationSession,
|
||||||
visitedElements = visitedElements,
|
visitedElements = visitedElements,
|
||||||
).resolveDesignation()
|
).resolveDesignation()
|
||||||
|
|||||||
+2
-1
@@ -5,6 +5,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.LLFirGlobalResolveComponents
|
||||||
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.sessions.LLFirSession
|
||||||
@@ -39,12 +40,12 @@ import org.jetbrains.kotlin.utils.exceptions.requireWithAttachment
|
|||||||
|
|
||||||
internal abstract class LLFirTargetResolver(
|
internal abstract class LLFirTargetResolver(
|
||||||
protected val resolveTarget: LLFirResolveTarget,
|
protected val resolveTarget: LLFirResolveTarget,
|
||||||
protected val lockProvider: LLFirLockProvider,
|
|
||||||
val resolverPhase: FirResolvePhase,
|
val resolverPhase: FirResolvePhase,
|
||||||
private val isJumpingPhase: Boolean = false,
|
private val isJumpingPhase: Boolean = false,
|
||||||
) : LLFirResolveTargetVisitor {
|
) : LLFirResolveTargetVisitor {
|
||||||
val resolveTargetSession: LLFirSession get() = resolveTarget.session
|
val resolveTargetSession: LLFirSession get() = resolveTarget.session
|
||||||
val resolveTargetScopeSession: ScopeSession get() = resolveTargetSession.getScopeSession()
|
val resolveTargetScopeSession: ScopeSession get() = resolveTargetSession.getScopeSession()
|
||||||
|
private val lockProvider: LLFirLockProvider get() = LLFirGlobalResolveComponents.getInstance(resolveTargetSession).lockProvider
|
||||||
|
|
||||||
private val _containingDeclarations = mutableListOf<FirDeclaration>()
|
private val _containingDeclarations = mutableListOf<FirDeclaration>()
|
||||||
|
|
||||||
|
|||||||
+2
-9
@@ -6,7 +6,6 @@
|
|||||||
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.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
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkContextReceiverTypeRefIsResolved
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkContextReceiverTypeRefIsResolved
|
||||||
@@ -28,10 +27,7 @@ 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 createTargetResolver(
|
override fun createTargetResolver(target: LLFirResolveTarget): LLFirTargetResolver = LLFirTypeTargetResolver(target)
|
||||||
target: LLFirResolveTarget,
|
|
||||||
lockProvider: LLFirLockProvider,
|
|
||||||
): LLFirTargetResolver = LLFirTypeTargetResolver(target, lockProvider)
|
|
||||||
|
|
||||||
override fun phaseSpecificCheckIsResolved(target: FirElementWithResolveState) {
|
override fun phaseSpecificCheckIsResolved(target: FirElementWithResolveState) {
|
||||||
if (target is FirAnnotationContainer) {
|
if (target is FirAnnotationContainer) {
|
||||||
@@ -60,10 +56,7 @@ internal object LLFirTypeLazyResolver : LLFirLazyResolver(FirResolvePhase.TYPES)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private class LLFirTypeTargetResolver(
|
private class LLFirTypeTargetResolver(target: LLFirResolveTarget) : LLFirTargetResolver(target, FirResolvePhase.TYPES) {
|
||||||
target: LLFirResolveTarget,
|
|
||||||
lockProvider: LLFirLockProvider,
|
|
||||||
) : LLFirTargetResolver(target, lockProvider, FirResolvePhase.TYPES) {
|
|
||||||
private val transformer = object : FirTypeResolveTransformer(resolveTargetSession, resolveTargetScopeSession) {
|
private val transformer = object : FirTypeResolveTransformer(resolveTargetSession, resolveTargetScopeSession) {
|
||||||
override fun transformTypeRef(typeRef: FirTypeRef, data: Any?): FirResolvedTypeRef {
|
override fun transformTypeRef(typeRef: FirTypeRef, data: Any?): FirResolvedTypeRef {
|
||||||
FirLazyBodiesCalculator.calculateAnnotations(typeRef, session)
|
FirLazyBodiesCalculator.calculateAnnotations(typeRef, session)
|
||||||
|
|||||||
Reference in New Issue
Block a user