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
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 2f89d62..6b71dd0 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 @@ 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 1d43df5..dd4da8a 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.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.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 @@ StandaloneProjectFactory.createProjectEnvironment( projectDisposable, applicationDisposable, + unitTestMode, classLoader = classLoader ) - init { FirStandaloneServiceRegistrar.registerApplicationServices(kotlinCoreProjectEnvironment.environment.application) } @@ -217,6 +218,7 @@ 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 @@ 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 792be49..0f520fa 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 @@ StandaloneProjectFactory.createProjectEnvironment( testRootDisposable, testServices.applicationDisposableProvider.getApplicationRootDisposable(), + unitTestMode = true ) }