[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:
committed by
Space Team
parent
c4bb5c6d8f
commit
141b187e37
+3
-5
@@ -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
|
||||||
|
|
||||||
|
|||||||
+1
-3
@@ -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)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+1
-1
@@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -197,7 +197,7 @@ private class LLFirSuperTypeTargetResolver(
|
|||||||
visitedElements = visitedElements,
|
visitedElements = visitedElements,
|
||||||
).resolveDesignation()
|
).resolveDesignation()
|
||||||
|
|
||||||
LLFirLazyPhaseResolverByPhase.getByPhase(resolverPhase).checkIsResolved(target)
|
LLFirSupertypeLazyResolver.checkIsResolved(target.target)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user