From 9782ec1b1eb7e56f8a7abfef51441462b2362093 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Wed, 4 Dec 2019 16:24:11 +0300 Subject: [PATCH] FIR resolve phases: set BODY_RESOLVE phased properly Before this commit, we never set this phase to declaration or file --- .../fir/resolve/transformers/FirAbstractPhaseTransformer.kt | 2 +- .../body/resolve/FirAbstractBodyResolveTransformer.kt | 2 +- .../body/resolve/FirBodyResolveTransformerAdapters.kt | 3 +-- .../org/jetbrains/kotlin/fir/declarations/FirResolvePhase.kt | 2 +- 4 files changed, 4 insertions(+), 5 deletions(-) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirAbstractPhaseTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirAbstractPhaseTransformer.kt index f035942d10d..3330138fa2a 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirAbstractPhaseTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirAbstractPhaseTransformer.kt @@ -28,7 +28,7 @@ abstract class FirAbstractPhaseTransformer( open val AbstractFirBasedSymbol.phasedFir: D where D : FirDeclaration, D : FirSymbolOwner get() { - val requiredPhase = transformerPhase.prev + val requiredPhase = transformerPhase.requiredToLaunch return phasedFir(session, requiredPhase) } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirAbstractBodyResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirAbstractBodyResolveTransformer.kt index 34d276ad79e..beb3cd235cf 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirAbstractBodyResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirAbstractBodyResolveTransformer.kt @@ -35,7 +35,7 @@ abstract class FirAbstractBodyResolveTransformer(phase: FirResolvePhase) : FirAb final override val AbstractFirBasedSymbol.phasedFir: D where D : FirDeclaration, D : FirSymbolOwner get() { - val requiredPhase = transformerPhase.prev + val requiredPhase = transformerPhase.requiredToLaunch return phasedFir(session, requiredPhase) } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirBodyResolveTransformerAdapters.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirBodyResolveTransformerAdapters.kt index cfdeb7cad99..29730f39ddc 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirBodyResolveTransformerAdapters.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirBodyResolveTransformerAdapters.kt @@ -73,10 +73,9 @@ class FirBodyResolveTransformerAdapter : FirTransformer() { } override fun transformFile(file: FirFile, data: Nothing?): CompositeTransformResult { - // Despite of real phase is EXPRESSIONS, we state IMPLICIT_TYPES here, because DECLARATIONS previous phase is OK for us val transformer = FirBodyResolveTransformer( file.session, - phase = FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE, + phase = FirResolvePhase.BODY_RESOLVE, implicitTypeOnly = false, scopeSession = scopeSession ) diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirResolvePhase.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirResolvePhase.kt index f43c2d8d756..355171fa6e6 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirResolvePhase.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirResolvePhase.kt @@ -15,7 +15,7 @@ enum class FirResolvePhase { IMPLICIT_TYPES_BODY_RESOLVE, BODY_RESOLVE; - val prev: FirResolvePhase get() = values()[ordinal - 1] + val requiredToLaunch: FirResolvePhase get() = if (this == BODY_RESOLVE) STATUS else values()[ordinal - 1] val next: FirResolvePhase get() = values()[ordinal + 1]