[Analysis API] move KotlinFakeClsStubsCache service registration to StandaloneProjectFactory

so it can be used from standalone mode
This commit is contained in:
Ilya Kirillov
2023-05-11 14:54:54 +02:00
committed by Space Team
parent 452844ffc6
commit feaf9acd1d
2 changed files with 20 additions and 1 deletions
@@ -64,6 +64,5 @@ object AnalysisApiBaseTestServiceRegistrar: AnalysisApiTestServiceRegistrar() {
}
override fun registerApplicationServices(application: MockApplication, testServices: TestServices) {
application.registerService(KotlinFakeClsStubsCache::class.java, KotlinFakeClsStubsCache())
}
}
@@ -11,6 +11,7 @@ import com.intellij.core.CoreApplicationEnvironment
import com.intellij.core.CoreJavaFileManager
import com.intellij.core.CorePackageIndex
import com.intellij.ide.highlighter.JavaFileType
import com.intellij.mock.MockApplication
import com.intellij.mock.MockProject
import com.intellij.openapi.Disposable
import com.intellij.openapi.roots.PackageIndex
@@ -29,6 +30,7 @@ import org.jetbrains.kotlin.analysis.api.impl.base.references.HLApiReferenceProv
import org.jetbrains.kotlin.analysis.api.impl.base.java.source.JavaElementSourceWithSmartPointerFactory
import org.jetbrains.kotlin.analysis.api.resolve.extensions.KtResolveExtensionProvider
import org.jetbrains.kotlin.analysis.project.structure.*
import org.jetbrains.kotlin.analysis.providers.impl.KotlinFakeClsStubsCache
import org.jetbrains.kotlin.cli.common.messages.MessageCollector
import org.jetbrains.kotlin.cli.jvm.compiler.*
import org.jetbrains.kotlin.cli.jvm.index.JavaRoot
@@ -61,12 +63,30 @@ object StandaloneProjectFactory {
KotlinCoreEnvironment.getOrCreateApplicationEnvironmentForTests(applicationDisposable, compilerConfiguration)
registerApplicationExtensionPoints(applicationEnvironment, applicationDisposable)
registerApplicationServices(applicationEnvironment.application)
return KotlinCoreProjectEnvironment(projectDisposable, applicationEnvironment).apply {
registerProjectServices(project)
registerJavaPsiFacade(project)
}
}
private fun registerApplicationServices(application: MockApplication) {
if (application.getServiceIfCreated(KotlinFakeClsStubsCache::class.java) != null) {
// application services already registered by som other threads, tests
return
}
KotlinCoreEnvironment.underApplicationLock {
if (application.getServiceIfCreated(KotlinFakeClsStubsCache::class.java) != null) {
// application services already registered by som other threads, tests
return
}
application.apply {
registerService(KotlinFakeClsStubsCache::class.java, KotlinFakeClsStubsCache())
}
}
}
private fun registerProjectServices(project: MockProject) {
@Suppress("UnstableApiUsage")
CoreApplicationEnvironment.registerExtensionPoint(