From 35cce7eedd206a1b7f577e379d17f05a0711ed0d Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Mon, 27 Apr 2020 12:09:01 +0300 Subject: [PATCH] [FIR] Initialize extension service in all FIR tests --- .../kotlin/fir/extensions/FirExtensionRegistrar.kt | 6 +++++- .../kotlin/fir/AbstractFirBaseDiagnosticsTest.kt | 6 +++++- .../tests/org/jetbrains/kotlin/fir/SessionTestUtils.kt | 4 ++++ .../jetbrains/kotlin/idea/fir/FirModuleResolveState.kt | 8 +++++++- .../kotlin/idea/fir/AbstractFirMultiModuleResolveTest.kt | 7 ++++++- 5 files changed, 27 insertions(+), 4 deletions(-) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/extensions/FirExtensionRegistrar.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/extensions/FirExtensionRegistrar.kt index bcd826797f8..1cd08ca8394 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/extensions/FirExtensionRegistrar.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/extensions/FirExtensionRegistrar.kt @@ -33,7 +33,11 @@ abstract class FirExtensionRegistrar { class RegisteredExtensions( val statusTransformerExtensions: List - ) + ) { + companion object { + val EMPTY = RegisteredExtensions(emptyList()) + } + } } fun FirExtensionPointService.registerExtensions(extensions: FirExtensionRegistrar.RegisteredExtensions) { diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/fir/AbstractFirBaseDiagnosticsTest.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/fir/AbstractFirBaseDiagnosticsTest.kt index e01ea9ad400..319b820bcb4 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/fir/AbstractFirBaseDiagnosticsTest.kt +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/fir/AbstractFirBaseDiagnosticsTest.kt @@ -28,7 +28,9 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.FirPsiDiagnostic import org.jetbrains.kotlin.fir.builder.RawFirBuilder import org.jetbrains.kotlin.fir.declarations.FirFile import org.jetbrains.kotlin.fir.extensions.FirExtensionPointService +import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar import org.jetbrains.kotlin.fir.extensions.extensionPointService +import org.jetbrains.kotlin.fir.extensions.registerExtensions import org.jetbrains.kotlin.fir.java.FirJavaModuleBasedSession import org.jetbrains.kotlin.fir.java.FirLibrarySession import org.jetbrains.kotlin.fir.java.FirProjectSessionProvider @@ -108,7 +110,9 @@ abstract class AbstractFirBaseDiagnosticsTest : BaseDiagnosticsTest() { runAnalysis(testDataFile, files, firFilesPerSession) } - open fun registerFirExtensions(service: FirExtensionPointService) {} + open fun registerFirExtensions(service: FirExtensionPointService) { + service.registerExtensions(FirExtensionRegistrar.RegisteredExtensions.EMPTY) + } private fun mapKtFilesToFirFiles(session: FirSession, ktFiles: List, firFiles: MutableList, useLightTree: Boolean) { val firProvider = (session.firProvider as FirProviderImpl) diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/fir/SessionTestUtils.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/fir/SessionTestUtils.kt index ad43f22e686..09c4f82b631 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/fir/SessionTestUtils.kt +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/fir/SessionTestUtils.kt @@ -8,6 +8,9 @@ package org.jetbrains.kotlin.fir import com.intellij.openapi.project.Project import com.intellij.psi.search.GlobalSearchScope import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment +import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar +import org.jetbrains.kotlin.fir.extensions.extensionPointService +import org.jetbrains.kotlin.fir.extensions.registerExtensions import org.jetbrains.kotlin.fir.java.FirJavaModuleBasedSession import org.jetbrains.kotlin.fir.java.FirLibrarySession import org.jetbrains.kotlin.fir.java.FirProjectSessionProvider @@ -32,6 +35,7 @@ fun createSession( val provider = FirProjectSessionProvider(project) return FirJavaModuleBasedSession(moduleInfo, provider, sourceScope).also { createSessionForDependencies(project, provider, moduleInfo, librariesScope, packagePartProvider) + it.extensionPointService.registerExtensions(FirExtensionRegistrar.RegisteredExtensions.EMPTY) } } diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/fir/FirModuleResolveState.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/fir/FirModuleResolveState.kt index 7b157350d9c..c8cf11f25d3 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/fir/FirModuleResolveState.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/fir/FirModuleResolveState.kt @@ -14,6 +14,9 @@ import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.analysis.diagnostics.FirDiagnostic import org.jetbrains.kotlin.fir.analysis.diagnostics.FirPsiDiagnostic import org.jetbrains.kotlin.fir.declarations.FirFile +import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar +import org.jetbrains.kotlin.fir.extensions.extensionPointService +import org.jetbrains.kotlin.fir.extensions.registerExtensions import org.jetbrains.kotlin.fir.java.FirProjectSessionProvider import org.jetbrains.kotlin.idea.caches.project.ModuleSourceInfo import org.jetbrains.kotlin.idea.caches.project.getModuleInfo @@ -31,11 +34,14 @@ interface FirModuleResolveState { fun getSession(project: Project, moduleInfo: ModuleSourceInfo): FirSession { sessionProvider.getSession(moduleInfo)?.let { return it } return synchronized(moduleInfo.module) { - sessionProvider.getSession(moduleInfo) ?: FirIdeJavaModuleBasedSession( + val session = sessionProvider.getSession(moduleInfo) ?: FirIdeJavaModuleBasedSession( project, moduleInfo, sessionProvider, moduleInfo.contentScope() ).also { moduleBasedSession -> sessionProvider.sessionCache[moduleInfo] = moduleBasedSession } + session.also { + it.extensionPointService.registerExtensions(FirExtensionRegistrar.RegisteredExtensions.EMPTY) + } } } diff --git a/idea/idea-fir/tests/org/jetbrains/kotlin/idea/fir/AbstractFirMultiModuleResolveTest.kt b/idea/idea-fir/tests/org/jetbrains/kotlin/idea/fir/AbstractFirMultiModuleResolveTest.kt index ca482f00120..2ab9558ce29 100644 --- a/idea/idea-fir/tests/org/jetbrains/kotlin/idea/fir/AbstractFirMultiModuleResolveTest.kt +++ b/idea/idea-fir/tests/org/jetbrains/kotlin/idea/fir/AbstractFirMultiModuleResolveTest.kt @@ -16,6 +16,9 @@ import org.jetbrains.kotlin.fir.declarations.FirDeclaration import org.jetbrains.kotlin.fir.declarations.FirFile import org.jetbrains.kotlin.fir.declarations.FirResolvePhase import org.jetbrains.kotlin.fir.dependenciesWithoutSelf +import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar +import org.jetbrains.kotlin.fir.extensions.extensionPointService +import org.jetbrains.kotlin.fir.extensions.registerExtensions import org.jetbrains.kotlin.fir.java.FirJavaModuleBasedSession import org.jetbrains.kotlin.fir.java.FirLibrarySession import org.jetbrains.kotlin.fir.java.FirProjectSessionProvider @@ -68,7 +71,9 @@ abstract class AbstractFirMultiModuleResolveTest : AbstractMultiModuleTest() { private fun createSession(module: Module, provider: FirProjectSessionProvider): FirJavaModuleBasedSession { val moduleInfo = module.productionSourceInfo()!! - return FirJavaModuleBasedSession(moduleInfo, provider, moduleInfo.contentScope()) + return FirJavaModuleBasedSession(moduleInfo, provider, moduleInfo.contentScope()).also { + it.extensionPointService.registerExtensions(FirExtensionRegistrar.RegisteredExtensions.EMPTY) + } } private fun createLibrarySession(moduleInfo: IdeaModuleInfo, provider: FirProjectSessionProvider): FirLibrarySession {