From 93992d1d759dac25d2c5e348774973a28bf25d40 Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Tue, 19 May 2020 11:35:36 +0300 Subject: [PATCH] [FIR] Get rid of `FirTypeResolveTransformerAdapter` --- .../transformers/FirTypeResolveTransformer.kt | 23 ++++--------------- .../resolve/transformers/ResolvePhaseUtils.kt | 2 +- 2 files changed, 5 insertions(+), 20 deletions(-) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirTypeResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirTypeResolveTransformer.kt index c4ec6618711..c133bc0fc31 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirTypeResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirTypeResolveTransformer.kt @@ -5,7 +5,6 @@ package org.jetbrains.kotlin.fir.resolve.transformers -import org.jetbrains.kotlin.fir.FirElement import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.expressions.FirBlock @@ -17,36 +16,21 @@ import org.jetbrains.kotlin.fir.types.FirImplicitTypeRef import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.impl.FirImplicitBuiltinTypeRef import org.jetbrains.kotlin.fir.visitors.CompositeTransformResult -import org.jetbrains.kotlin.fir.visitors.FirTransformer import org.jetbrains.kotlin.fir.visitors.compose -@AdapterForResolvePhase -class FirTypeResolveTransformerAdapter( - private val scopeSession: ScopeSession -) : FirTransformer() { - override fun transformElement(element: E, data: Nothing?): CompositeTransformResult { - error("Should not be called for ${element::class}, only for files") - } - - override fun transformFile(file: FirFile, data: Nothing?): CompositeTransformResult { - val transformer = FirTypeResolveTransformer(scopeSession, file.session) - return file.transform(transformer, null) - } -} - fun > F.runTypeResolvePhaseForLocalClass( session: FirSession, scopeSession: ScopeSession, currentScopeList: List, ): F { - val transformer = FirTypeResolveTransformer(scopeSession, session, currentScopeList) + val transformer = FirTypeResolveTransformer(session, scopeSession, currentScopeList) return this.transform(transformer, null).single } -private class FirTypeResolveTransformer( - private val scopeSession: ScopeSession, +class FirTypeResolveTransformer( override val session: FirSession, + private val scopeSession: ScopeSession, initialScopes: List = emptyList() ) : FirAbstractTreeTransformerWithSuperTypes( phase = FirResolvePhase.TYPES, @@ -60,6 +44,7 @@ private class FirTypeResolveTransformer( private val typeResolverTransformer: FirSpecificTypeResolverTransformer = FirSpecificTypeResolverTransformer(towerScope, session) override fun transformFile(file: FirFile, data: Nothing?): CompositeTransformResult { + checkSessionConsistency(file) return withScopeCleanup { towerScope.addScopes(createImportingScopes(file, session, scopeSession)) super.transformFile(file, data) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/ResolvePhaseUtils.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/ResolvePhaseUtils.kt index 94353912a93..734e2ee1153 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/ResolvePhaseUtils.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/ResolvePhaseUtils.kt @@ -26,7 +26,7 @@ fun FirResolvePhase.createTransformerByPhase(session: FirSession, scopeSession: IMPORTS -> FirImportResolveTransformer(session) SUPER_TYPES -> FirSupertypeResolverTransformer(session, scopeSession) SEALED_CLASS_INHERITORS -> FirSealedClassInheritorsTransformer() - TYPES -> FirTypeResolveTransformerAdapter(scopeSession) + TYPES -> FirTypeResolveTransformer(session, scopeSession) STATUS -> FirStatusResolveTransformerAdapter() CONTRACTS -> FirContractResolveTransformerAdapter(scopeSession) IMPLICIT_TYPES_BODY_RESOLVE -> FirImplicitTypeBodyResolveTransformerAdapter(scopeSession)