From 141b187e37140c97ba68c88f699660f1c7a4f5a5 Mon Sep 17 00:00:00 2001 From: Dmitrii Gridin Date: Mon, 4 Mar 2024 13:51:06 +0100 Subject: [PATCH] [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. --- .../low/level/api/fir/transformers/LLFirLazyResolver.kt | 8 +++----- .../level/api/fir/transformers/LLFirLazyResolverRunner.kt | 4 +--- .../fir/transformers/LLFirReturnTypeCalculatorWithJump.kt | 2 +- .../api/fir/transformers/LLFirSupertypeLazyResolver.kt | 2 +- 4 files changed, 6 insertions(+), 10 deletions(-) diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirLazyResolver.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirLazyResolver.kt index 19ee1668831..53b9f640be2 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirLazyResolver.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirLazyResolver.kt @@ -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 diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirLazyResolverRunner.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirLazyResolverRunner.kt index 13147d3473e..10c885a5b17 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirLazyResolverRunner.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirLazyResolverRunner.kt @@ -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) } } \ No newline at end of file diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirReturnTypeCalculatorWithJump.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirReturnTypeCalculatorWithJump.kt index b89ac566f93..741b8d1a602 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirReturnTypeCalculatorWithJump.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirReturnTypeCalculatorWithJump.kt @@ -42,7 +42,7 @@ internal class LLFirReturnTypeCalculatorWithJump( return recursionInImplicitTypeRef() } - LLFirImplicitTypesLazyResolver.checkIsResolved(designation) + LLFirImplicitTypesLazyResolver.checkIsResolved(declaration) return declaration.returnTypeRef as FirResolvedTypeRef } } diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirSupertypeLazyResolver.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirSupertypeLazyResolver.kt index a14822363bc..4dd132f11cb 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirSupertypeLazyResolver.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirSupertypeLazyResolver.kt @@ -197,7 +197,7 @@ private class LLFirSuperTypeTargetResolver( visitedElements = visitedElements, ).resolveDesignation() - LLFirLazyPhaseResolverByPhase.getByPhase(resolverPhase).checkIsResolved(target) + LLFirSupertypeLazyResolver.checkIsResolved(target.target) } /**