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
This commit is contained in:
Jinseong Jeon
2023-06-19 23:55:42 -07:00
committed by Ilya Kirillov
parent 134b02c754
commit 799aadfacf
3 changed files with 13 additions and 5 deletions
@@ -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)
@@ -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,
@@ -43,6 +43,7 @@ class AnalysisApiEnvironmentManagerImpl(
StandaloneProjectFactory.createProjectEnvironment(
testRootDisposable,
testServices.applicationDisposableProvider.getApplicationRootDisposable(),
unitTestMode = true
)
}