FIR resolve phases: set BODY_RESOLVE phased properly

Before this commit, we never set this phase to declaration or file
This commit is contained in:
Mikhail Glukhikh
2019-12-04 16:24:11 +03:00
parent 26ee02ed02
commit 9782ec1b1e
4 changed files with 4 additions and 5 deletions
@@ -28,7 +28,7 @@ abstract class FirAbstractPhaseTransformer<D>(
open val <D> AbstractFirBasedSymbol<D>.phasedFir: D where D : FirDeclaration, D : FirSymbolOwner<D> open val <D> AbstractFirBasedSymbol<D>.phasedFir: D where D : FirDeclaration, D : FirSymbolOwner<D>
get() { get() {
val requiredPhase = transformerPhase.prev val requiredPhase = transformerPhase.requiredToLaunch
return phasedFir(session, requiredPhase) return phasedFir(session, requiredPhase)
} }
@@ -35,7 +35,7 @@ abstract class FirAbstractBodyResolveTransformer(phase: FirResolvePhase) : FirAb
final override val <D> AbstractFirBasedSymbol<D>.phasedFir: D where D : FirDeclaration, D : FirSymbolOwner<D> final override val <D> AbstractFirBasedSymbol<D>.phasedFir: D where D : FirDeclaration, D : FirSymbolOwner<D>
get() { get() {
val requiredPhase = transformerPhase.prev val requiredPhase = transformerPhase.requiredToLaunch
return phasedFir(session, requiredPhase) return phasedFir(session, requiredPhase)
} }
@@ -73,10 +73,9 @@ class FirBodyResolveTransformerAdapter : FirTransformer<Nothing?>() {
} }
override fun transformFile(file: FirFile, data: Nothing?): CompositeTransformResult<FirFile> { override fun transformFile(file: FirFile, data: Nothing?): CompositeTransformResult<FirFile> {
// Despite of real phase is EXPRESSIONS, we state IMPLICIT_TYPES here, because DECLARATIONS previous phase is OK for us
val transformer = FirBodyResolveTransformer( val transformer = FirBodyResolveTransformer(
file.session, file.session,
phase = FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE, phase = FirResolvePhase.BODY_RESOLVE,
implicitTypeOnly = false, implicitTypeOnly = false,
scopeSession = scopeSession scopeSession = scopeSession
) )
@@ -15,7 +15,7 @@ enum class FirResolvePhase {
IMPLICIT_TYPES_BODY_RESOLVE, IMPLICIT_TYPES_BODY_RESOLVE,
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] val next: FirResolvePhase get() = values()[ordinal + 1]