[FIR] Don't recreate transformers in FirSupertypeResolverTransformer

This commit is contained in:
Dmitriy Novozhilov
2020-05-19 11:32:20 +03:00
parent dc30bf5d09
commit ca4deec10e
2 changed files with 7 additions and 5 deletions
@@ -25,10 +25,12 @@ import org.jetbrains.kotlin.utils.addIfNotNull
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
class FirSupertypeResolverTransformer(
private val scopeSession: ScopeSession
) : FirTransformer<Nothing?>() {
override val session: FirSession,
scopeSession: ScopeSession
) : FirAbstractPhaseTransformer<Nothing?>(FirResolvePhase.SUPER_TYPES) {
private val supertypeComputationSession = SupertypeComputationSession()
private val supertypeResolverVisitor = FirSupertypeResolverVisitor(session, supertypeComputationSession, scopeSession)
private val applySupertypesTransformer = FirApplySupertypesTransformer(supertypeComputationSession)
override fun <E : FirElement> transformElement(element: E, data: Nothing?): CompositeTransformResult<E> {
@@ -36,9 +38,9 @@ class FirSupertypeResolverTransformer(
}
override fun transformFile(file: FirFile, data: Nothing?): CompositeTransformResult<FirFile> {
val supertypeResolverVisitor = FirSupertypeResolverVisitor(file.session, supertypeComputationSession, scopeSession)
checkSessionConsistency(file)
file.accept(supertypeResolverVisitor)
supertypeComputationSession.breakLoops(file.session)
supertypeComputationSession.breakLoops(session)
return file.transform(applySupertypesTransformer, null)
}
}
@@ -24,7 +24,7 @@ fun FirResolvePhase.createTransformerByPhase(session: FirSession, scopeSession:
ANNOTATIONS_FOR_PLUGINS -> FirPluginAnnotationsResolveTransformer(session, scopeSession)
FIRST_PLUGIN_GENERATION -> FirFirstGenerationTransformer()
IMPORTS -> FirImportResolveTransformer(session)
SUPER_TYPES -> FirSupertypeResolverTransformer(scopeSession)
SUPER_TYPES -> FirSupertypeResolverTransformer(session, scopeSession)
SEALED_CLASS_INHERITORS -> FirSealedClassInheritorsTransformer()
TYPES -> FirTypeResolveTransformerAdapter(scopeSession)
STATUS -> FirStatusResolveTransformerAdapter()