From 48aa063b21e7b84f72462c5462a350b2a8e6e773 Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Mon, 20 Sep 2021 13:51:57 +0300 Subject: [PATCH] [FIR] Cleanup utils for creating FirTotalResolveProcessor --- .../transformers/FirTotalResolveProcessor.kt | 29 +++++++++- .../resolve/transformers/ResolvePhaseUtils.kt | 53 ------------------- 2 files changed, 28 insertions(+), 54 deletions(-) delete mode 100644 compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/ResolvePhaseUtils.kt diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirTotalResolveProcessor.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirTotalResolveProcessor.kt index adda27981ae..286acb3ad28 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirTotalResolveProcessor.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirTotalResolveProcessor.kt @@ -8,7 +8,12 @@ package org.jetbrains.kotlin.fir.resolve.transformers import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.FirFile import org.jetbrains.kotlin.fir.declarations.FirResolvePhase +import org.jetbrains.kotlin.fir.declarations.FirResolvePhase.* import org.jetbrains.kotlin.fir.resolve.ScopeSession +import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirBodyResolveProcessor +import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirImplicitTypeBodyResolveProcessor +import org.jetbrains.kotlin.fir.resolve.transformers.contracts.FirContractResolveProcessor +import org.jetbrains.kotlin.fir.resolve.transformers.plugin.* class FirTotalResolveProcessor(session: FirSession) { val scopeSession: ScopeSession = ScopeSession() @@ -41,7 +46,7 @@ fun createAllCompilerResolveProcessors( } } -inline fun createAllResolveProcessors( +private inline fun createAllResolveProcessors( scopeSession: ScopeSession? = null, pluginPhasesEnabled: Boolean, creator: FirResolvePhase.(ScopeSession) -> T @@ -53,3 +58,25 @@ inline fun createAllResolveProcessors( } return phases.map { it.creator(scopeSession) } } + +fun FirResolvePhase.createCompilerProcessorByPhase( + session: FirSession, + scopeSession: ScopeSession +): FirResolveProcessor { + return when (this) { + RAW_FIR -> throw IllegalArgumentException("Raw FIR building phase does not have a transformer") + ANNOTATIONS_FOR_PLUGINS -> FirPluginAnnotationsResolveProcessor(session, scopeSession) + CLASS_GENERATION -> FirGlobalClassGenerationProcessor(session, scopeSession) + IMPORTS -> FirImportResolveProcessor(session, scopeSession) + SUPER_TYPES -> FirSupertypeResolverProcessor(session, scopeSession) + SEALED_CLASS_INHERITORS -> FirSealedClassInheritorsProcessor(session, scopeSession) + TYPES -> FirTypeResolveProcessor(session, scopeSession) + EXTENSION_STATUS_UPDATE -> FirGlobalExtensionStatusProcessor(session, scopeSession) + STATUS -> FirStatusResolveProcessor(session, scopeSession) + ARGUMENTS_OF_ANNOTATIONS -> FirAnnotationArgumentsResolveProcessor(session, scopeSession) + CONTRACTS -> FirContractResolveProcessor(session, scopeSession) + NEW_MEMBERS_GENERATION -> FirGlobalNewMemberGenerationProcessor(session, scopeSession) + IMPLICIT_TYPES_BODY_RESOLVE -> FirImplicitTypeBodyResolveProcessor(session, scopeSession) + BODY_RESOLVE -> FirBodyResolveProcessor(session, scopeSession) + } +} 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 deleted file mode 100644 index 48ac38fd08c..00000000000 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/ResolvePhaseUtils.kt +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -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.FirResolvePhase -import org.jetbrains.kotlin.fir.declarations.FirResolvePhase.* -import org.jetbrains.kotlin.fir.resolve.ScopeSession -import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirBodyResolveProcessor -import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirImplicitTypeBodyResolveProcessor -import org.jetbrains.kotlin.fir.resolve.transformers.contracts.FirContractResolveProcessor -import org.jetbrains.kotlin.fir.resolve.transformers.plugin.* -import org.jetbrains.kotlin.fir.visitors.FirTransformer - -fun FirResolvePhase.createCompilerProcessorByPhase( - session: FirSession, - scopeSession: ScopeSession -): FirResolveProcessor { - return when (this) { - RAW_FIR -> throw IllegalStateException("Raw FIR building phase does not have a transformer") - ANNOTATIONS_FOR_PLUGINS -> FirPluginAnnotationsResolveProcessor(session, scopeSession) - CLASS_GENERATION -> FirGlobalClassGenerationProcessor(session, scopeSession) - IMPORTS -> FirImportResolveProcessor(session, scopeSession) - SUPER_TYPES -> FirSupertypeResolverProcessor(session, scopeSession) - SEALED_CLASS_INHERITORS -> FirSealedClassInheritorsProcessor(session, scopeSession) - TYPES -> FirTypeResolveProcessor(session, scopeSession) - EXTENSION_STATUS_UPDATE -> FirGlobalExtensionStatusProcessor(session, scopeSession) - STATUS -> FirStatusResolveProcessor(session, scopeSession) - ARGUMENTS_OF_ANNOTATIONS -> FirAnnotationArgumentsResolveProcessor(session, scopeSession) - CONTRACTS -> FirContractResolveProcessor(session, scopeSession) - NEW_MEMBERS_GENERATION -> FirGlobalNewMemberGenerationProcessor(session, scopeSession) - IMPLICIT_TYPES_BODY_RESOLVE -> FirImplicitTypeBodyResolveProcessor(session, scopeSession) - BODY_RESOLVE -> FirBodyResolveProcessor(session, scopeSession) - } -} - -class FirDummyTransformerBasedProcessor( - session: FirSession, - scopeSession: ScopeSession -) : FirTransformerBasedResolveProcessor(session, scopeSession) { - override val transformer: FirTransformer - get() = DummyTransformer - - private object DummyTransformer : FirTransformer() { - override fun transformElement(element: E, data: Any?): E { - return element - } - } -}