[FIR] Don't recreate transformers in FirSupertypeResolverTransformer
This commit is contained in:
+6
-4
@@ -25,10 +25,12 @@ import org.jetbrains.kotlin.utils.addIfNotNull
|
|||||||
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
||||||
|
|
||||||
class FirSupertypeResolverTransformer(
|
class FirSupertypeResolverTransformer(
|
||||||
private val scopeSession: ScopeSession
|
override val session: FirSession,
|
||||||
) : FirTransformer<Nothing?>() {
|
scopeSession: ScopeSession
|
||||||
|
) : FirAbstractPhaseTransformer<Nothing?>(FirResolvePhase.SUPER_TYPES) {
|
||||||
private val supertypeComputationSession = SupertypeComputationSession()
|
private val supertypeComputationSession = SupertypeComputationSession()
|
||||||
|
|
||||||
|
private val supertypeResolverVisitor = FirSupertypeResolverVisitor(session, supertypeComputationSession, scopeSession)
|
||||||
private val applySupertypesTransformer = FirApplySupertypesTransformer(supertypeComputationSession)
|
private val applySupertypesTransformer = FirApplySupertypesTransformer(supertypeComputationSession)
|
||||||
|
|
||||||
override fun <E : FirElement> transformElement(element: E, data: Nothing?): CompositeTransformResult<E> {
|
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> {
|
override fun transformFile(file: FirFile, data: Nothing?): CompositeTransformResult<FirFile> {
|
||||||
val supertypeResolverVisitor = FirSupertypeResolverVisitor(file.session, supertypeComputationSession, scopeSession)
|
checkSessionConsistency(file)
|
||||||
file.accept(supertypeResolverVisitor)
|
file.accept(supertypeResolverVisitor)
|
||||||
supertypeComputationSession.breakLoops(file.session)
|
supertypeComputationSession.breakLoops(session)
|
||||||
return file.transform(applySupertypesTransformer, null)
|
return file.transform(applySupertypesTransformer, null)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -24,7 +24,7 @@ fun FirResolvePhase.createTransformerByPhase(session: FirSession, scopeSession:
|
|||||||
ANNOTATIONS_FOR_PLUGINS -> FirPluginAnnotationsResolveTransformer(session, scopeSession)
|
ANNOTATIONS_FOR_PLUGINS -> FirPluginAnnotationsResolveTransformer(session, scopeSession)
|
||||||
FIRST_PLUGIN_GENERATION -> FirFirstGenerationTransformer()
|
FIRST_PLUGIN_GENERATION -> FirFirstGenerationTransformer()
|
||||||
IMPORTS -> FirImportResolveTransformer(session)
|
IMPORTS -> FirImportResolveTransformer(session)
|
||||||
SUPER_TYPES -> FirSupertypeResolverTransformer(scopeSession)
|
SUPER_TYPES -> FirSupertypeResolverTransformer(session, scopeSession)
|
||||||
SEALED_CLASS_INHERITORS -> FirSealedClassInheritorsTransformer()
|
SEALED_CLASS_INHERITORS -> FirSealedClassInheritorsTransformer()
|
||||||
TYPES -> FirTypeResolveTransformerAdapter(scopeSession)
|
TYPES -> FirTypeResolveTransformerAdapter(scopeSession)
|
||||||
STATUS -> FirStatusResolveTransformerAdapter()
|
STATUS -> FirStatusResolveTransformerAdapter()
|
||||||
|
|||||||
Reference in New Issue
Block a user