[Analysis API Standalone] get rid of deprecated utils for initializing the standalone mode

they were deprecated and there are no clients for them now

^KT-60884
This commit is contained in:
Ilya Kirillov
2023-08-29 09:56:59 +02:00
committed by Space Team
parent f2078caf64
commit dca4015cba
@@ -1,209 +0,0 @@
/*
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.analysis.api.standalone
import com.intellij.mock.MockApplication
import com.intellij.mock.MockProject
import com.intellij.openapi.project.Project
import com.intellij.psi.PsiElementFinder
import com.intellij.psi.search.GlobalSearchScope
import org.jetbrains.kotlin.analysis.api.KtAnalysisApiInternals
import org.jetbrains.kotlin.analysis.api.fir.KtFirAnalysisSessionProvider
import org.jetbrains.kotlin.analysis.api.impl.base.references.HLApiReferenceProviderService
import org.jetbrains.kotlin.analysis.api.session.KtAnalysisSessionProvider
import org.jetbrains.kotlin.analysis.api.standalone.base.project.structure.KtStaticModuleDependentsProvider
import org.jetbrains.kotlin.analysis.decompiled.light.classes.ClsJavaStubByVirtualFileCache
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.services.FirSealedClassInheritorsProcessorFactory
import org.jetbrains.kotlin.analysis.project.structure.KotlinModuleDependentsProvider
import org.jetbrains.kotlin.analysis.project.structure.KtModuleScopeProvider
import org.jetbrains.kotlin.analysis.project.structure.KtModuleScopeProviderImpl
import org.jetbrains.kotlin.analysis.project.structure.ProjectStructureProvider
import org.jetbrains.kotlin.analysis.project.structure.impl.buildKtModuleProviderByCompilerConfiguration
import org.jetbrains.kotlin.analysis.project.structure.impl.getPsiFilesFromPaths
import org.jetbrains.kotlin.analysis.project.structure.impl.getSourceFilePaths
import org.jetbrains.kotlin.analysis.providers.*
import org.jetbrains.kotlin.analysis.providers.impl.*
import org.jetbrains.kotlin.asJava.KotlinAsJavaSupport
import org.jetbrains.kotlin.asJava.finder.JavaElementFinder
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.fir.declarations.SealedClassInheritorsProvider
import org.jetbrains.kotlin.fir.declarations.SealedClassInheritorsProviderImpl
import org.jetbrains.kotlin.idea.references.KotlinFirReferenceContributor
import org.jetbrains.kotlin.idea.references.KotlinReferenceProviderContributor
import org.jetbrains.kotlin.light.classes.symbol.SymbolKotlinAsJavaSupport
import org.jetbrains.kotlin.load.kotlin.PackagePartProvider
import org.jetbrains.kotlin.psi.KotlinReferenceProvidersService
import org.jetbrains.kotlin.psi.KtFile
/**
* Configure Application environment for Analysis API standalone mode.
*
* In particular, this will register:
* * [KotlinReferenceProvidersService]
* * [KotlinReferenceProviderContributor]
*/
@Deprecated(
"Use StandaloneAnalysisAPISessionBuilder.",
ReplaceWith("buildStandaloneAnalysisAPISession { }")
)
public fun configureApplicationEnvironment(app: MockApplication) {
if (app.getServiceIfCreated(KotlinReferenceProvidersService::class.java) == null) {
app.registerService(
KotlinReferenceProvidersService::class.java,
HLApiReferenceProviderService::class.java
)
}
if (app.getServiceIfCreated(KotlinReferenceProviderContributor::class.java) == null) {
app.registerService(
KotlinReferenceProviderContributor::class.java,
KotlinFirReferenceContributor::class.java
)
}
}
/**
* Configure Project environment for Analysis API standalone mode.
*
* In particular, this will register:
* * [KtAnalysisSessionProvider]
* * [SymbolKotlinAsJavaSupport]
* * [ClsJavaStubByVirtualFileCache]
* * [KotlinModificationTrackerFactory]
* * [KotlinMessageBusProvider]
* * [KotlinGlobalModificationService]
* * [KotlinAnnotationsResolverFactory]
* * [org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirResolveSessionService]
* * [FirSealedClassInheritorsProcessorFactory]
* * [KtModuleScopeProvider]
* * [ProjectStructureProvider]
* * [KotlinModuleDependentsProvider]
* * [KotlinDeclarationProviderFactory]
* * [KotlinPackageProviderFactory]
* * [PackagePartProviderFactory]
* * [KotlinReferenceProvidersService]
* * [KotlinReferenceProviderContributor]
*
* Note that [ProjectStructureProvider] is built by using
* * given [ktFiles] as Kotlin sources
* * other Java sources in [compilerConfig] (set via [addJavaSourceRoots])
* * JVM class paths in [compilerConfig] (set via [addJvmClasspathRoots]) as library.
*/
@Deprecated(
"Use StandaloneAnalysisAPISessionBuilder.",
ReplaceWith("buildStandaloneAnalysisAPISession { }")
)
public fun configureProjectEnvironment(
project: MockProject,
compilerConfig: CompilerConfiguration,
packagePartProvider: (GlobalSearchScope) -> PackagePartProvider,
) {
val sourceKtFiles = getPsiFilesFromPaths<KtFile>(project, getSourceFilePaths(compilerConfig))
configureProjectEnvironment(project, compilerConfig, sourceKtFiles, packagePartProvider)
}
internal fun configureProjectEnvironment(
project: MockProject,
compilerConfig: CompilerConfiguration,
sourceKtFiles: List<KtFile>,
packagePartProvider: (GlobalSearchScope) -> PackagePartProvider,
) {
reRegisterJavaElementFinder(project)
project.registerService(
KotlinModificationTrackerFactory::class.java,
KotlinStaticModificationTrackerFactory()
)
project.registerService(
KotlinMessageBusProvider::class.java,
KotlinProjectMessageBusProvider(project),
)
project.registerService(
KotlinGlobalModificationService::class.java,
KotlinStaticGlobalModificationService(project),
)
// FIR LC
project.registerService(
ClsJavaStubByVirtualFileCache::class.java,
ClsJavaStubByVirtualFileCache()
)
project.registerService(
KotlinAnnotationsResolverFactory::class.java,
KotlinStaticAnnotationsResolverFactory(sourceKtFiles)
)
project.registerService(
KotlinReferenceProvidersService::class.java,
HLApiReferenceProviderService::class.java
)
project.registerService(
KotlinReferenceProviderContributor::class.java,
KotlinFirReferenceContributor::class.java
)
project.registerService(
FirSealedClassInheritorsProcessorFactory::class.java,
object : FirSealedClassInheritorsProcessorFactory() {
override fun createSealedClassInheritorsProvider(): SealedClassInheritorsProvider {
return SealedClassInheritorsProviderImpl
}
}
)
project.registerService(
KtModuleScopeProvider::class.java,
KtModuleScopeProviderImpl()
)
val projectStructureProvider = buildKtModuleProviderByCompilerConfiguration(compilerConfig, project, sourceKtFiles)
project.registerService(
ProjectStructureProvider::class.java,
projectStructureProvider,
)
val declarationProviderFactory = KotlinStaticDeclarationProviderFactory(project, sourceKtFiles)
project.registerService(
KotlinModuleDependentsProvider::class.java,
KtStaticModuleDependentsProvider(projectStructureProvider.allKtModules),
)
project.registerService(
KotlinDeclarationProviderFactory::class.java,
declarationProviderFactory
)
project.registerService(
KotlinDeclarationProviderMerger::class.java,
KotlinStaticDeclarationProviderMerger(project)
)
project.registerService(
KotlinPackageProviderFactory::class.java,
KotlinStaticPackageProviderFactory(project, sourceKtFiles + declarationProviderFactory.getAdditionalCreatedKtFiles())
)
project.registerService(
PackagePartProviderFactory::class.java,
KotlinStaticPackagePartProviderFactory(packagePartProvider)
)
}
@OptIn(KtAnalysisApiInternals::class)
private fun reRegisterJavaElementFinder(project: Project) {
PsiElementFinder.EP.getPoint(project).unregisterExtension(JavaElementFinder::class.java)
with(project as MockProject) {
registerService(
KtAnalysisSessionProvider::class.java,
KtFirAnalysisSessionProvider(this)
)
picoContainer.unregisterComponent(KotlinAsJavaSupport::class.qualifiedName)
registerService(
KotlinAsJavaSupport::class.java,
SymbolKotlinAsJavaSupport(project)
)
}
@Suppress("DEPRECATION")
PsiElementFinder.EP.getPoint(project).registerExtension(JavaElementFinder(project))
}