[LL FIR] encapsulate checkIsResolved for LLFirResolveTarget

In this way, only `LLFirLazyResolver` will be responsible for running
and checking the resolution result.
Also, this commit replaces redundant `checkIsResolved` for
`LLFirResolveTarget` with cheaper `checkIsResolved` for declarations.
This commit is contained in:
Dmitrii Gridin
2024-03-04 13:51:06 +01:00
committed by Space Team
parent c4bb5c6d8f
commit 141b187e37
4 changed files with 6 additions and 10 deletions
@@ -33,6 +33,9 @@ internal sealed class LLFirLazyResolver(val resolverPhase: FirResolvePhase) {
) )
resolver.resolveDesignation() resolver.resolveDesignation()
target.forEachTarget(::checkIsResolved)
checkCanceled()
} }
protected abstract fun createTargetResolver(target: LLFirResolveTarget): LLFirTargetResolver protected abstract fun createTargetResolver(target: LLFirResolveTarget): LLFirTargetResolver
@@ -58,11 +61,6 @@ internal sealed class LLFirLazyResolver(val resolverPhase: FirResolvePhase) {
) )
} }
fun checkIsResolved(designation: LLFirResolveTarget) {
designation.forEachTarget(::checkIsResolved)
checkCanceled()
}
private fun checkNestedDeclarationsAreResolved(target: FirElementWithResolveState) { private fun checkNestedDeclarationsAreResolved(target: FirElementWithResolveState) {
if (target !is FirDeclaration) return if (target !is FirDeclaration) return
@@ -19,7 +19,7 @@ import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
*/ */
internal object LLFirLazyResolverRunner { internal object LLFirLazyResolverRunner {
/** /**
* Runs [resolver][LLFirLazyResolver] associated with [phase] for [target] and checks if it finished correctly. * Runs [resolver][LLFirLazyResolver] associated with [phase] for [target].
* *
* @see LLFirLazyPhaseResolverByPhase * @see LLFirLazyPhaseResolverByPhase
*/ */
@@ -28,7 +28,5 @@ internal object LLFirLazyResolverRunner {
LLFirGlobalResolveComponents.getInstance(target.session).lockProvider.withGlobalLock { LLFirGlobalResolveComponents.getInstance(target.session).lockProvider.withGlobalLock {
lazyResolver.resolve(target) lazyResolver.resolve(target)
} }
lazyResolver.checkIsResolved(target)
} }
} }
@@ -42,7 +42,7 @@ internal class LLFirReturnTypeCalculatorWithJump(
return recursionInImplicitTypeRef() return recursionInImplicitTypeRef()
} }
LLFirImplicitTypesLazyResolver.checkIsResolved(designation) LLFirImplicitTypesLazyResolver.checkIsResolved(declaration)
return declaration.returnTypeRef as FirResolvedTypeRef return declaration.returnTypeRef as FirResolvedTypeRef
} }
} }
@@ -197,7 +197,7 @@ private class LLFirSuperTypeTargetResolver(
visitedElements = visitedElements, visitedElements = visitedElements,
).resolveDesignation() ).resolveDesignation()
LLFirLazyPhaseResolverByPhase.getByPhase(resolverPhase).checkIsResolved(target) LLFirSupertypeLazyResolver.checkIsResolved(target.target)
} }
/** /**