FIR IDE: do not read declaration phase without read lock hold

This commit is contained in:
Ilya Kirillov
2021-04-14 12:51:49 +02:00
committed by TeamCityServer
parent 0cf00d0f72
commit 0a80fbb078
6 changed files with 39 additions and 8 deletions
@@ -26,6 +26,8 @@ import org.jetbrains.kotlin.fir.resolve.calls.jvm.JvmCallConflictResolverFactory
import org.jetbrains.kotlin.fir.resolve.inference.InferenceComponents
import org.jetbrains.kotlin.fir.resolve.providers.impl.FirQualifierResolverImpl
import org.jetbrains.kotlin.fir.resolve.providers.impl.FirTypeResolverImpl
import org.jetbrains.kotlin.fir.resolve.transformers.FirPhaseCheckingPhaseManager
import org.jetbrains.kotlin.fir.resolve.transformers.FirPhaseManager
import org.jetbrains.kotlin.fir.resolve.transformers.plugin.GeneratedClassIndex
import org.jetbrains.kotlin.fir.scopes.impl.FirDeclaredMemberScopeProvider
import org.jetbrains.kotlin.fir.types.FirCorrespondingSupertypesCache
@@ -58,6 +60,10 @@ fun FirSession.registerSealedClassInheritorsProvider() {
register(SealedClassInheritorsProvider::class, SealedClassInheritorsProviderImpl)
}
@OptIn(SessionConfiguration::class)
fun FirSession.registerFirCliPhaseManager() {
register(FirPhaseManager::class, FirPhaseCheckingPhaseManager)
}
// -------------------------- Resolve components --------------------------
@@ -74,6 +74,7 @@ object FirSessionFactory {
): FirJavaModuleBasedSession {
return FirJavaModuleBasedSession(moduleInfo, sessionProvider).apply {
registerThreadUnsafeCaches()
registerFirCliPhaseManager()
registerCommonComponents(languageVersionSettings)
registerResolveComponents(lookupTracker)
registerJavaSpecificResolveComponents()
@@ -127,6 +128,7 @@ object FirSessionFactory {
): FirLibrarySession {
return FirLibrarySession(moduleInfo, sessionProvider).apply {
registerThreadUnsafeCaches()
registerFirCliPhaseManager()
registerCommonComponents(languageVersionSettings)
registerSealedClassInheritorsProvider()