[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()
target.forEachTarget(::checkIsResolved)
checkCanceled()
}
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) {
if (target !is FirDeclaration) return
@@ -19,7 +19,7 @@ import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
*/
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
*/
@@ -28,7 +28,5 @@ internal object LLFirLazyResolverRunner {
LLFirGlobalResolveComponents.getInstance(target.session).lockProvider.withGlobalLock {
lazyResolver.resolve(target)
}
lazyResolver.checkIsResolved(target)
}
}
@@ -42,7 +42,7 @@ internal class LLFirReturnTypeCalculatorWithJump(
return recursionInImplicitTypeRef()
}
LLFirImplicitTypesLazyResolver.checkIsResolved(designation)
LLFirImplicitTypesLazyResolver.checkIsResolved(declaration)
return declaration.returnTypeRef as FirResolvedTypeRef
}
}
@@ -197,7 +197,7 @@ private class LLFirSuperTypeTargetResolver(
visitedElements = visitedElements,
).resolveDesignation()
LLFirLazyPhaseResolverByPhase.getByPhase(resolverPhase).checkIsResolved(target)
LLFirSupertypeLazyResolver.checkIsResolved(target.target)
}
/**