From 799aadfacf4e2a009dee561055fed8ff840e7647 Mon Sep 17 00:00:00 2001 From: Jinseong Jeon Date: Mon, 19 Jun 2023 23:55:42 -0700 Subject: [PATCH] AA: add an option to create Application env for production v.s. test mode ...and use production mode by default for AA standalone ^KT-59511 Fixed --- .../project/structure/StandaloneProjectFactory.kt | 6 +++++- .../standalone/StandaloneAnalysisAPISessionBuilder.kt | 11 +++++++---- .../services/AnalysisApiEnvironmentManager.kt | 1 + 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/analysis/analysis-api-standalone/analysis-api-standalone-base/src/org/jetbrains/kotlin/analysis/api/standalone/base/project/structure/StandaloneProjectFactory.kt b/analysis/analysis-api-standalone/analysis-api-standalone-base/src/org/jetbrains/kotlin/analysis/api/standalone/base/project/structure/StandaloneProjectFactory.kt index 2f89d621c17..6b71dd0a93c 100644 --- a/analysis/analysis-api-standalone/analysis-api-standalone-base/src/org/jetbrains/kotlin/analysis/api/standalone/base/project/structure/StandaloneProjectFactory.kt +++ b/analysis/analysis-api-standalone/analysis-api-standalone-base/src/org/jetbrains/kotlin/analysis/api/standalone/base/project/structure/StandaloneProjectFactory.kt @@ -62,11 +62,15 @@ object StandaloneProjectFactory { fun createProjectEnvironment( projectDisposable: Disposable, applicationDisposable: Disposable, + unitTestMode: Boolean = false, compilerConfiguration: CompilerConfiguration = CompilerConfiguration(), classLoader: ClassLoader = MockProject::class.java.classLoader ): KotlinCoreProjectEnvironment { - val applicationEnvironment = + val applicationEnvironment = if (unitTestMode) KotlinCoreEnvironment.getOrCreateApplicationEnvironmentForTests(applicationDisposable, compilerConfiguration) + else + KotlinCoreEnvironment.getOrCreateApplicationEnvironmentForProduction(applicationDisposable, compilerConfiguration) + registerApplicationExtensionPoints(applicationEnvironment, applicationDisposable) registerApplicationServices(applicationEnvironment.application) diff --git a/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/api/standalone/StandaloneAnalysisAPISessionBuilder.kt b/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/api/standalone/StandaloneAnalysisAPISessionBuilder.kt index 1d43df53f7f..dd4da8a6eed 100644 --- a/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/api/standalone/StandaloneAnalysisAPISessionBuilder.kt +++ b/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/api/standalone/StandaloneAnalysisAPISessionBuilder.kt @@ -12,6 +12,9 @@ import com.intellij.openapi.project.Project import com.intellij.openapi.util.Disposer import com.intellij.openapi.vfs.impl.jar.CoreJarFileSystem import com.intellij.psi.search.GlobalSearchScope +import kotlin.contracts.ExperimentalContracts +import kotlin.contracts.InvocationKind +import kotlin.contracts.contract import org.jetbrains.kotlin.analysis.api.KtAnalysisApiInternals import org.jetbrains.kotlin.analysis.api.lifetime.KtDefaultLifetimeTokenProvider import org.jetbrains.kotlin.analysis.api.lifetime.KtReadActionConfinementDefaultLifetimeTokenProvider @@ -37,13 +40,11 @@ import org.jetbrains.kotlin.fir.declarations.SealedClassInheritorsProvider import org.jetbrains.kotlin.fir.declarations.SealedClassInheritorsProviderImpl import org.jetbrains.kotlin.load.kotlin.PackagePartProvider import org.jetbrains.kotlin.psi.KtFile -import kotlin.contracts.ExperimentalContracts -import kotlin.contracts.InvocationKind -import kotlin.contracts.contract public class StandaloneAnalysisAPISessionBuilder( applicationDisposable: Disposable, projectDisposable: Disposable, + unitTestMode: Boolean, classLoader: ClassLoader = MockProject::class.java.classLoader ) { init { @@ -59,10 +60,10 @@ public class StandaloneAnalysisAPISessionBuilder( StandaloneProjectFactory.createProjectEnvironment( projectDisposable, applicationDisposable, + unitTestMode, classLoader = classLoader ) - init { FirStandaloneServiceRegistrar.registerApplicationServices(kotlinCoreProjectEnvironment.environment.application) } @@ -217,6 +218,7 @@ public class StandaloneAnalysisAPISessionBuilder( public inline fun buildStandaloneAnalysisAPISession( applicationDisposable: Disposable = Disposer.newDisposable("StandaloneAnalysisAPISession.application"), projectDisposable: Disposable = Disposer.newDisposable("StandaloneAnalysisAPISession.project"), + unitTestMode: Boolean = false, withPsiDeclarationFromBinaryModuleProvider: Boolean = false, classLoader: ClassLoader = MockProject::class.java.classLoader, init: StandaloneAnalysisAPISessionBuilder.() -> Unit @@ -227,6 +229,7 @@ public inline fun buildStandaloneAnalysisAPISession( return StandaloneAnalysisAPISessionBuilder( applicationDisposable, projectDisposable, + unitTestMode, classLoader ).apply(init).build( withPsiDeclarationFromBinaryModuleProvider, diff --git a/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/services/AnalysisApiEnvironmentManager.kt b/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/services/AnalysisApiEnvironmentManager.kt index 792be499db2..0f520facea3 100644 --- a/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/services/AnalysisApiEnvironmentManager.kt +++ b/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/services/AnalysisApiEnvironmentManager.kt @@ -43,6 +43,7 @@ class AnalysisApiEnvironmentManagerImpl( StandaloneProjectFactory.createProjectEnvironment( testRootDisposable, testServices.applicationDisposableProvider.getApplicationRootDisposable(), + unitTestMode = true ) }