[LL FIR] LLFirLazyResolver: implement checkIsResolved
To simplify logic and avoid boilerplate
This commit is contained in:
committed by
Space Team
parent
5b6e6b7a4e
commit
4b330e88be
+3
-8
@@ -9,7 +9,6 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.api.targets.LLFirResolveT
|
|||||||
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.lazy.resolve.FirLazyBodiesCalculator.calculateAnnotations
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve.FirLazyBodiesCalculator.calculateAnnotations
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkAnnotationArgumentsMappingIsResolved
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkAnnotationArgumentsMappingIsResolved
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkPhase
|
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.expressionGuard
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.expressionGuard
|
||||||
import org.jetbrains.kotlin.fir.*
|
import org.jetbrains.kotlin.fir.*
|
||||||
import org.jetbrains.kotlin.fir.declarations.*
|
import org.jetbrains.kotlin.fir.declarations.*
|
||||||
@@ -35,13 +34,9 @@ internal object LLFirAnnotationArgumentMappingLazyResolver : LLFirLazyResolver(F
|
|||||||
resolver.resolveDesignation()
|
resolver.resolveDesignation()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun checkIsResolved(target: FirElementWithResolveState) {
|
override fun phaseSpecificCheckIsResolved(target: FirElementWithResolveState) {
|
||||||
target.checkPhase(resolverPhase)
|
if (target !is FirAnnotationContainer) return
|
||||||
if (target is FirAnnotationContainer) {
|
checkAnnotationArgumentsMappingIsResolved(target)
|
||||||
checkAnnotationArgumentsMappingIsResolved(target)
|
|
||||||
}
|
|
||||||
|
|
||||||
checkNestedDeclarationsAreResolved(target)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
-6
@@ -9,7 +9,6 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.api.targets.LLFirResolveT
|
|||||||
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.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.checkPhase
|
|
||||||
import org.jetbrains.kotlin.fir.FirElementWithResolveState
|
import org.jetbrains.kotlin.fir.FirElementWithResolveState
|
||||||
import org.jetbrains.kotlin.fir.FirFileAnnotationsContainer
|
import org.jetbrains.kotlin.fir.FirFileAnnotationsContainer
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
@@ -33,11 +32,6 @@ internal object LLFirAnnotationArgumentsLazyResolver : LLFirLazyResolver(FirReso
|
|||||||
val resolver = LLFirAnnotationArgumentsTargetResolver(target, lockProvider, session, scopeSession, towerDataContextCollector)
|
val resolver = LLFirAnnotationArgumentsTargetResolver(target, lockProvider, session, scopeSession, towerDataContextCollector)
|
||||||
resolver.resolveDesignation()
|
resolver.resolveDesignation()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun checkIsResolved(target: FirElementWithResolveState) {
|
|
||||||
target.checkPhase(resolverPhase)
|
|
||||||
checkNestedDeclarationsAreResolved(target)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private class LLFirAnnotationArgumentsTargetResolver(
|
private class LLFirAnnotationArgumentsTargetResolver(
|
||||||
|
|||||||
+3
-5
@@ -48,8 +48,7 @@ internal object LLFirBodyLazyResolver : LLFirLazyResolver(FirResolvePhase.BODY_R
|
|||||||
resolver.resolveDesignation()
|
resolver.resolveDesignation()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun checkIsResolved(target: FirElementWithResolveState) {
|
override fun phaseSpecificCheckIsResolved(target: FirElementWithResolveState) {
|
||||||
target.checkPhase(resolverPhase)
|
|
||||||
when (target) {
|
when (target) {
|
||||||
is FirValueParameter -> checkDefaultValueIsResolved(target)
|
is FirValueParameter -> checkDefaultValueIsResolved(target)
|
||||||
is FirVariable -> checkInitializerIsResolved(target)
|
is FirVariable -> checkInitializerIsResolved(target)
|
||||||
@@ -59,8 +58,6 @@ internal object LLFirBodyLazyResolver : LLFirLazyResolver(FirResolvePhase.BODY_R
|
|||||||
}
|
}
|
||||||
is FirFunction -> checkBodyIsResolved(target)
|
is FirFunction -> checkBodyIsResolved(target)
|
||||||
}
|
}
|
||||||
|
|
||||||
checkNestedDeclarationsAreResolved(target)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -146,7 +143,8 @@ private class LLFirBodyTargetResolver(
|
|||||||
is FirScript -> resolve(target, BodyStateKeepers.SCRIPT)
|
is FirScript -> resolve(target, BodyStateKeepers.SCRIPT)
|
||||||
is FirDanglingModifierList,
|
is FirDanglingModifierList,
|
||||||
is FirFileAnnotationsContainer,
|
is FirFileAnnotationsContainer,
|
||||||
is FirTypeAlias -> {
|
is FirTypeAlias,
|
||||||
|
-> {
|
||||||
// No bodies here
|
// No bodies here
|
||||||
}
|
}
|
||||||
else -> throwUnexpectedFirElementError(target)
|
else -> throwUnexpectedFirElementError(target)
|
||||||
|
|||||||
+1
-5
@@ -13,7 +13,6 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.LLFirLockPro
|
|||||||
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
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkPhase
|
|
||||||
import org.jetbrains.kotlin.analysis.utils.errors.requireIsInstance
|
import org.jetbrains.kotlin.analysis.utils.errors.requireIsInstance
|
||||||
import org.jetbrains.kotlin.fir.FirAnnotationContainer
|
import org.jetbrains.kotlin.fir.FirAnnotationContainer
|
||||||
import org.jetbrains.kotlin.fir.FirElementWithResolveState
|
import org.jetbrains.kotlin.fir.FirElementWithResolveState
|
||||||
@@ -45,14 +44,11 @@ internal object LLFirCompilerAnnotationsLazyResolver : LLFirLazyResolver(FirReso
|
|||||||
resolver.resolveDesignation()
|
resolver.resolveDesignation()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun checkIsResolved(target: FirElementWithResolveState) {
|
override fun phaseSpecificCheckIsResolved(target: FirElementWithResolveState) {
|
||||||
target.checkPhase(resolverPhase)
|
|
||||||
when (target) {
|
when (target) {
|
||||||
is FirClassLikeDeclaration -> checkDeprecationProviderIsResolved(target, target.deprecationsProvider)
|
is FirClassLikeDeclaration -> checkDeprecationProviderIsResolved(target, target.deprecationsProvider)
|
||||||
is FirCallableDeclaration -> checkDeprecationProviderIsResolved(target, target.deprecationsProvider)
|
is FirCallableDeclaration -> checkDeprecationProviderIsResolved(target, target.deprecationsProvider)
|
||||||
}
|
}
|
||||||
|
|
||||||
checkNestedDeclarationsAreResolved(target)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+5
-8
@@ -8,7 +8,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.builder.LLFirLockProvider
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkPhase
|
|
||||||
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.isCallableWithSpecialBody
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.isCallableWithSpecialBody
|
||||||
import org.jetbrains.kotlin.fir.FirElementWithResolveState
|
import org.jetbrains.kotlin.fir.FirElementWithResolveState
|
||||||
@@ -32,12 +31,9 @@ internal object LLFirContractsLazyResolver : LLFirLazyResolver(FirResolvePhase.C
|
|||||||
resolver.resolveDesignation()
|
resolver.resolveDesignation()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun checkIsResolved(target: FirElementWithResolveState) {
|
override fun phaseSpecificCheckIsResolved(target: FirElementWithResolveState) {
|
||||||
target.checkPhase(resolverPhase)
|
if (target !is FirContractDescriptionOwner) return
|
||||||
if (target is FirContractDescriptionOwner) {
|
// TODO checkContractDescriptionIsResolved(declaration)
|
||||||
// TODO checkContractDescriptionIsResolved(declaration)
|
|
||||||
}
|
|
||||||
checkNestedDeclarationsAreResolved(target)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -67,7 +63,8 @@ private class LLFirContractsTargetResolver(
|
|||||||
is FirAnonymousInitializer,
|
is FirAnonymousInitializer,
|
||||||
is FirScript,
|
is FirScript,
|
||||||
is FirFileAnnotationsContainer,
|
is FirFileAnnotationsContainer,
|
||||||
is FirDanglingModifierList -> {
|
is FirDanglingModifierList,
|
||||||
|
-> {
|
||||||
// No contracts here
|
// No contracts here
|
||||||
check(target !is FirContractDescriptionOwner) {
|
check(target !is FirContractDescriptionOwner) {
|
||||||
"Unexpected contract description owner: $target (${target.javaClass.name})"
|
"Unexpected contract description owner: $target (${target.javaClass.name})"
|
||||||
|
|||||||
+3
-8
@@ -8,7 +8,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.file.builder.LLFirLockProvider
|
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.analysis.low.level.api.fir.util.checkPhase
|
|
||||||
import org.jetbrains.kotlin.fir.FirElementWithResolveState
|
import org.jetbrains.kotlin.fir.FirElementWithResolveState
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.declarations.*
|
import org.jetbrains.kotlin.fir.declarations.*
|
||||||
@@ -29,13 +28,9 @@ internal object LLFirExpectActualMatcherLazyResolver : LLFirLazyResolver(FirReso
|
|||||||
resolver.resolveDesignation()
|
resolver.resolveDesignation()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun checkIsResolved(target: FirElementWithResolveState) {
|
override fun phaseSpecificCheckIsResolved(target: FirElementWithResolveState) {
|
||||||
target.checkPhase(resolverPhase)
|
if (target !is FirMemberDeclaration || !target.canHaveExpectCounterPart()) return
|
||||||
if (target is FirMemberDeclaration && target.canHaveExpectCounterPart()) {
|
checkExpectForActualIsResolved(target)
|
||||||
checkExpectForActualIsResolved(target)
|
|
||||||
}
|
|
||||||
|
|
||||||
checkNestedDeclarationsAreResolved(target)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
-5
@@ -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.file.builder.LLFirLockProvider
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.LLFirLockProvider
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkPhase
|
|
||||||
import org.jetbrains.kotlin.fir.FirElementWithResolveState
|
import org.jetbrains.kotlin.fir.FirElementWithResolveState
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirFile
|
import org.jetbrains.kotlin.fir.declarations.FirFile
|
||||||
@@ -28,10 +27,6 @@ internal object LLFirGeneratedCompanionObjectLazyResolver : LLFirLazyResolver(Fi
|
|||||||
val resolver = LLFirCompanionGenerationTargetResolver(target, lockProvider, session)
|
val resolver = LLFirCompanionGenerationTargetResolver(target, lockProvider, session)
|
||||||
resolver.resolveDesignation()
|
resolver.resolveDesignation()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun checkIsResolved(target: FirElementWithResolveState) {
|
|
||||||
target.checkPhase(resolverPhase)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private class LLFirCompanionGenerationTargetResolver(
|
private class LLFirCompanionGenerationTargetResolver(
|
||||||
|
|||||||
+5
-9
@@ -8,7 +8,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.builder.LLFirLockProvider
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkPhase
|
|
||||||
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
|
||||||
import org.jetbrains.kotlin.fir.FirFileAnnotationsContainer
|
import org.jetbrains.kotlin.fir.FirFileAnnotationsContainer
|
||||||
@@ -32,13 +31,9 @@ internal object LLFirImplicitTypesLazyResolver : LLFirLazyResolver(FirResolvePha
|
|||||||
resolver.resolveDesignation()
|
resolver.resolveDesignation()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun checkIsResolved(target: FirElementWithResolveState) {
|
override fun phaseSpecificCheckIsResolved(target: FirElementWithResolveState) {
|
||||||
target.checkPhase(resolverPhase)
|
if (target !is FirCallableDeclaration) return
|
||||||
if (target is FirCallableDeclaration) {
|
checkReturnTypeRefIsResolved(target)
|
||||||
checkReturnTypeRefIsResolved(target)
|
|
||||||
}
|
|
||||||
|
|
||||||
checkNestedDeclarationsAreResolved(target)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -79,7 +74,8 @@ internal class LLFirImplicitBodyTargetResolver(
|
|||||||
is FirScript,
|
is FirScript,
|
||||||
is FirAnonymousInitializer,
|
is FirAnonymousInitializer,
|
||||||
is FirDanglingModifierList,
|
is FirDanglingModifierList,
|
||||||
is FirFileAnnotationsContainer -> {
|
is FirFileAnnotationsContainer,
|
||||||
|
-> {
|
||||||
// No implicit bodies here
|
// No implicit bodies here
|
||||||
}
|
}
|
||||||
else -> throwUnexpectedFirElementError(target)
|
else -> throwUnexpectedFirElementError(target)
|
||||||
|
|||||||
+15
-2
@@ -8,6 +8,7 @@ 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.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.fir.FirElementWithResolveState
|
import org.jetbrains.kotlin.fir.FirElementWithResolveState
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.declarations.*
|
import org.jetbrains.kotlin.fir.declarations.*
|
||||||
@@ -25,7 +26,18 @@ internal abstract class LLFirLazyResolver(
|
|||||||
towerDataContextCollector: FirResolveContextCollector?,
|
towerDataContextCollector: FirResolveContextCollector?,
|
||||||
)
|
)
|
||||||
|
|
||||||
abstract fun checkIsResolved(target: FirElementWithResolveState)
|
fun checkIsResolved(target: FirElementWithResolveState) {
|
||||||
|
target.checkPhase(resolverPhase)
|
||||||
|
phaseSpecificCheckIsResolved(target)
|
||||||
|
checkNestedDeclarationsAreResolved(target)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check that phase-specific conditions are met
|
||||||
|
* Will be performed to resolved declaration and its nested declarations
|
||||||
|
* @see checkNestedDeclarationsAreResolved
|
||||||
|
*/
|
||||||
|
protected open fun phaseSpecificCheckIsResolved(target: FirElementWithResolveState) {}
|
||||||
|
|
||||||
fun updatePhaseForDeclarationInternals(target: FirElementWithResolveState) {
|
fun updatePhaseForDeclarationInternals(target: FirElementWithResolveState) {
|
||||||
LLFirPhaseUpdater.updateDeclarationInternalsPhase(
|
LLFirPhaseUpdater.updateDeclarationInternalsPhase(
|
||||||
@@ -39,8 +51,9 @@ internal abstract class LLFirLazyResolver(
|
|||||||
designation.forEachTarget(::checkIsResolved)
|
designation.forEachTarget(::checkIsResolved)
|
||||||
}
|
}
|
||||||
|
|
||||||
protected fun checkNestedDeclarationsAreResolved(target: FirElementWithResolveState) {
|
private fun checkNestedDeclarationsAreResolved(target: FirElementWithResolveState) {
|
||||||
if (target !is FirDeclaration) return
|
if (target !is FirDeclaration) return
|
||||||
|
|
||||||
checkFunctionParametersAreResolved(target)
|
checkFunctionParametersAreResolved(target)
|
||||||
checkPropertyAccessorsAreResolved(target)
|
checkPropertyAccessorsAreResolved(target)
|
||||||
checkPropertyBackingFieldIsResolved(target)
|
checkPropertyBackingFieldIsResolved(target)
|
||||||
|
|||||||
-6
@@ -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.file.builder.LLFirLockProvider
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.LLFirLockProvider
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkPhase
|
|
||||||
import org.jetbrains.kotlin.fir.FirElementWithResolveState
|
import org.jetbrains.kotlin.fir.FirElementWithResolveState
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirFile
|
import org.jetbrains.kotlin.fir.declarations.FirFile
|
||||||
@@ -27,11 +26,6 @@ internal object LLFirSealedClassInheritorsLazyResolver : LLFirLazyResolver(FirRe
|
|||||||
val resolver = LLFirSealedClassInheritorsDesignatedResolver(target, lockProvider)
|
val resolver = LLFirSealedClassInheritorsDesignatedResolver(target, lockProvider)
|
||||||
resolver.resolveDesignation()
|
resolver.resolveDesignation()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun checkIsResolved(target: FirElementWithResolveState) {
|
|
||||||
target.checkPhase(resolverPhase)
|
|
||||||
checkNestedDeclarationsAreResolved(target)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+3
-11
@@ -11,7 +11,6 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.api.targets.asResolveTarg
|
|||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.tryCollectDesignationWithFile
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.tryCollectDesignationWithFile
|
||||||
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.util.checkDeclarationStatusIsResolved
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkDeclarationStatusIsResolved
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkPhase
|
|
||||||
import org.jetbrains.kotlin.fir.FirElementWithResolveState
|
import org.jetbrains.kotlin.fir.FirElementWithResolveState
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.declarations.*
|
import org.jetbrains.kotlin.fir.declarations.*
|
||||||
@@ -43,16 +42,9 @@ internal object LLFirStatusLazyResolver : LLFirLazyResolver(FirResolvePhase.STAT
|
|||||||
resolver.resolveDesignation()
|
resolver.resolveDesignation()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun checkIsResolved(target: FirElementWithResolveState) {
|
override fun phaseSpecificCheckIsResolved(target: FirElementWithResolveState) {
|
||||||
if (target !is FirAnonymousInitializer) {
|
if (target !is FirMemberDeclaration) return
|
||||||
target.checkPhase(resolverPhase)
|
checkDeclarationStatusIsResolved(target)
|
||||||
}
|
|
||||||
|
|
||||||
if (target is FirMemberDeclaration) {
|
|
||||||
checkDeclarationStatusIsResolved(target)
|
|
||||||
}
|
|
||||||
|
|
||||||
checkNestedDeclarationsAreResolved(target)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-5
@@ -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.tryCollectDesignationWithFile
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.tryCollectDesignationWithFile
|
||||||
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.util.checkPhase
|
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkTypeRefIsResolved
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkTypeRefIsResolved
|
||||||
import org.jetbrains.kotlin.fir.FirElementWithResolveState
|
import org.jetbrains.kotlin.fir.FirElementWithResolveState
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
@@ -41,8 +40,7 @@ internal object LLFirSupertypeLazyResolver : LLFirLazyResolver(FirResolvePhase.S
|
|||||||
resolver.resolveDesignation()
|
resolver.resolveDesignation()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun checkIsResolved(target: FirElementWithResolveState) {
|
override fun phaseSpecificCheckIsResolved(target: FirElementWithResolveState) {
|
||||||
target.checkPhase(resolverPhase)
|
|
||||||
when (target) {
|
when (target) {
|
||||||
is FirClass -> {
|
is FirClass -> {
|
||||||
for (superTypeRef in target.superTypeRefs) {
|
for (superTypeRef in target.superTypeRefs) {
|
||||||
@@ -53,8 +51,6 @@ internal object LLFirSupertypeLazyResolver : LLFirLazyResolver(FirResolvePhase.S
|
|||||||
is FirTypeAlias -> {
|
is FirTypeAlias -> {
|
||||||
checkTypeRefIsResolved(target.expandedTypeRef, typeRefName = "type alias expanded type", target)
|
checkTypeRefIsResolved(target.expandedTypeRef, typeRefName = "type alias expanded type", target)
|
||||||
}
|
}
|
||||||
|
|
||||||
else -> {}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-7
@@ -9,7 +9,6 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.api.targets.LLFirResolveT
|
|||||||
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.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.checkPhase
|
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkReceiverTypeRefIsResolved
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkReceiverTypeRefIsResolved
|
||||||
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.analysis.low.level.api.fir.util.checkTypeRefIsResolved
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkTypeRefIsResolved
|
||||||
@@ -40,8 +39,7 @@ internal object LLFirTypeLazyResolver : LLFirLazyResolver(FirResolvePhase.TYPES)
|
|||||||
resolver.resolveDesignation()
|
resolver.resolveDesignation()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun checkIsResolved(target: FirElementWithResolveState) {
|
override fun phaseSpecificCheckIsResolved(target: FirElementWithResolveState) {
|
||||||
target.checkPhase(resolverPhase)
|
|
||||||
if (target is FirAnnotationContainer) {
|
if (target is FirAnnotationContainer) {
|
||||||
checkAnnotationTypeIsResolved(target)
|
checkAnnotationTypeIsResolved(target)
|
||||||
}
|
}
|
||||||
@@ -63,11 +61,7 @@ internal object LLFirTypeLazyResolver : LLFirLazyResolver(FirResolvePhase.TYPES)
|
|||||||
checkTypeRefIsResolved(bound, "type parameter bound", target)
|
checkTypeRefIsResolved(bound, "type parameter bound", target)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
else -> {}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
checkNestedDeclarationsAreResolved(target)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user