From 96d697e61bd6052c7b5cb98088f7a350756b40d9 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Wed, 30 Nov 2022 12:03:55 +0100 Subject: [PATCH] Lazy...ResolverWithPhaseChecking: add note about symbol current phase --- .../FirCompilerLazyDeclarationResolverWithPhaseChecking.kt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirCompilerLazyDeclarationResolverWithPhaseChecking.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirCompilerLazyDeclarationResolverWithPhaseChecking.kt index b5571aee99d..4e7a527c850 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirCompilerLazyDeclarationResolverWithPhaseChecking.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirCompilerLazyDeclarationResolverWithPhaseChecking.kt @@ -38,6 +38,11 @@ class FirCompilerLazyDeclarationResolverWithPhaseChecking : FirLazyDeclarationRe val currentPhase = currentTransformerPhase ?: error("Current phase is not set, please call ${this::startResolvingPhase.name} before starting transforming the file") + // TODO: symbol current phase can already be requestedPhase or more. + // This case is not a violation of any contract + // However, now we keep more strict invariant here, + // because we don't want to hide some cases when transformers violate phase contract directly + // but due to usage of already resolved stdlib classes we don't see it if (requestedPhase >= currentPhase) { exceptions += FirLazyResolveContractViolationException( """`lazyResolveToPhase($requestedPhase)` cannot be called from a transformer with a phase $currentPhase.