[FIR] Refactor session components initialization

From now all customization of session should perform via DSL which
  declared in FirSessionFactory. Registration or mutation session
  services from other places is prohibited
This commit is contained in:
Dmitriy Novozhilov
2020-08-28 17:35:23 +03:00
parent 2819bd3aaf
commit 6db8c28291
24 changed files with 158 additions and 149 deletions
@@ -64,15 +64,12 @@ import org.jetbrains.kotlin.fir.backend.jvm.FirJvmClassCodegen
import org.jetbrains.kotlin.fir.backend.jvm.FirJvmKotlinMangler
import org.jetbrains.kotlin.fir.backend.jvm.FirJvmVisibilityConverter
import org.jetbrains.kotlin.fir.builder.RawFirBuilder
import org.jetbrains.kotlin.fir.extensions.BunchOfRegisteredExtensions
import org.jetbrains.kotlin.fir.extensions.extensionService
import org.jetbrains.kotlin.fir.extensions.registerExtensions
import org.jetbrains.kotlin.fir.checkers.registerExtendedCommonCheckers
import org.jetbrains.kotlin.fir.java.FirProjectSessionProvider
import org.jetbrains.kotlin.fir.resolve.firProvider
import org.jetbrains.kotlin.fir.resolve.providers.impl.FirProviderImpl
import org.jetbrains.kotlin.fir.resolve.transformers.FirTotalResolveProcessor
import org.jetbrains.kotlin.fir.session.FirSessionFactory
import org.jetbrains.kotlin.fir.session.registerExtendedCheckersComponent
import org.jetbrains.kotlin.idea.MainFunctionDetector
import org.jetbrains.kotlin.ir.backend.jvm.jvmResolveLibraries
import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmManglerDesc
@@ -353,7 +350,11 @@ object KotlinToJVMBytecodeCompiler {
}
val moduleInfo = FirJvmModuleInfo(module.getModuleName())
val session: FirSession = FirSessionFactory.createJavaModuleBasedSession(moduleInfo, provider, scope).also {
val session: FirSession = FirSessionFactory.createJavaModuleBasedSession(moduleInfo, provider, scope) {
if (extendedAnalysisMode) {
registerExtendedCommonCheckers()
}
}.also {
val dependenciesInfo = FirJvmModuleInfo(Name.special("<dependencies>"))
moduleInfo.dependencies.add(dependenciesInfo)
val librariesScope = ProjectScope.getLibrariesScope(project)
@@ -361,10 +362,6 @@ object KotlinToJVMBytecodeCompiler {
dependenciesInfo, provider, librariesScope,
project, environment.createPackagePartProvider(librariesScope)
)
it.extensionService.registerExtensions(BunchOfRegisteredExtensions.empty())
if (extendedAnalysisMode) {
it.registerExtendedCheckersComponent()
}
}
val firProvider = (session.firProvider as FirProviderImpl)
val builder = RawFirBuilder(session, firProvider.kotlinScopeProvider, stubMode = false)