[Analysis API Standalone] commonize logic for Analysis API FIR service registration between standalone and tests
This commit is contained in:
committed by
Space Team
parent
feaf9acd1d
commit
fbcf73eb42
@@ -34,6 +34,7 @@ dependencies {
|
||||
testApi(projectTests(":compiler:fir:analysis-tests:legacy-fir-tests"))
|
||||
testApi(projectTests(":analysis:analysis-api-impl-base"))
|
||||
testApi(projectTests(":analysis:decompiled:decompiler-to-file-stubs"))
|
||||
testApi(project(":analysis:analysis-api-standalone:analysis-api-fir-standalone-base"))
|
||||
testApi(project(":analysis:decompiled:decompiler-to-file-stubs"))
|
||||
testApi(project(":analysis:decompiled:decompiler-to-psi"))
|
||||
testApi(project(":kotlin-test:kotlin-test-junit"))
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
plugins {
|
||||
kotlin("jvm")
|
||||
id("jps-compatible")
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation(intellijCore())
|
||||
implementation(kotlinStdlib())
|
||||
implementation(project(":compiler:psi"))
|
||||
implementation(project(":compiler:cli-base"))
|
||||
implementation(project(":analysis:analysis-api"))
|
||||
implementation(project(":analysis:analysis-api-impl-base"))
|
||||
implementation(project(":analysis:analysis-api-fir"))
|
||||
implementation(project(":analysis:symbol-light-classes"))
|
||||
implementation(project(":analysis:analysis-api-standalone:analysis-api-standalone-base"))
|
||||
}
|
||||
|
||||
|
||||
sourceSets {
|
||||
"main" { projectDefault() }
|
||||
"test" { none() }
|
||||
}
|
||||
+66
@@ -0,0 +1,66 @@
|
||||
/*
|
||||
* Copyright 2010-2023 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.base.project.structure
|
||||
|
||||
import com.intellij.mock.MockApplication
|
||||
import com.intellij.mock.MockProject
|
||||
import com.intellij.openapi.Disposable
|
||||
import com.intellij.psi.PsiElementFinder
|
||||
import com.intellij.psi.impl.PsiElementFinderImpl
|
||||
import org.jetbrains.kotlin.analysis.api.KtAnalysisApiInternals
|
||||
import org.jetbrains.kotlin.analysis.api.fir.KtFirAnalysisSessionProvider
|
||||
import org.jetbrains.kotlin.analysis.api.fir.references.ReadWriteAccessCheckerFirImpl
|
||||
import org.jetbrains.kotlin.analysis.api.session.KtAnalysisSessionProvider
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirGlobalResolveComponents
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirInternals
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirResolveSessionService
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.JvmFirDeserializedSymbolProviderFactory
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.LLFirBuiltinsSessionFactory
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.LLFirSessionCache
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.LLFirSessionConfigurator
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.stubBased.deserialization.JvmStubBasedDeserializedSymbolProviderFactory
|
||||
import org.jetbrains.kotlin.asJava.KotlinAsJavaSupport
|
||||
import org.jetbrains.kotlin.asJava.finder.JavaElementFinder
|
||||
import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension
|
||||
import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrarAdapter
|
||||
import org.jetbrains.kotlin.idea.references.KotlinFirReferenceContributor
|
||||
import org.jetbrains.kotlin.idea.references.KotlinReferenceProviderContributor
|
||||
import org.jetbrains.kotlin.idea.references.ReadWriteAccessChecker
|
||||
import org.jetbrains.kotlin.light.classes.symbol.SymbolKotlinAsJavaSupport
|
||||
|
||||
@OptIn(LLFirInternals::class, KtAnalysisApiInternals::class)
|
||||
object FirStandaloneServiceRegistrar : AnalysisApiStandaloneServiceRegistrar {
|
||||
override fun registerApplicationServices(application: MockApplication) {
|
||||
}
|
||||
|
||||
override fun registerProjectExtensionPoints(project: MockProject) {
|
||||
IrGenerationExtension.registerExtensionPoint(project)
|
||||
FirExtensionRegistrarAdapter.registerExtensionPoint(project)
|
||||
LLFirSessionConfigurator.registerExtensionPoint(project)
|
||||
}
|
||||
|
||||
override fun registerProjectServices(project: MockProject) {
|
||||
project.apply {
|
||||
registerService(KtAnalysisSessionProvider::class.java, KtFirAnalysisSessionProvider(this))
|
||||
registerService(LLFirResolveSessionService::class.java)
|
||||
registerService(LLFirSessionCache::class.java)
|
||||
registerService(KotlinAsJavaSupport::class.java, SymbolKotlinAsJavaSupport::class.java)
|
||||
registerService(LLFirGlobalResolveComponents::class.java)
|
||||
registerService(LLFirBuiltinsSessionFactory::class.java)
|
||||
registerService(JvmFirDeserializedSymbolProviderFactory::class.java, JvmStubBasedDeserializedSymbolProviderFactory::class.java)
|
||||
registerService(KotlinReferenceProviderContributor::class.java, KotlinFirReferenceContributor::class.java)
|
||||
registerService(ReadWriteAccessChecker::class.java, ReadWriteAccessCheckerFirImpl::class.java )
|
||||
}
|
||||
}
|
||||
|
||||
@Suppress("TestOnlyProblems")
|
||||
override fun registerProjectModelServices(project: MockProject, disposable: Disposable) {
|
||||
with(PsiElementFinder.EP.getPoint(project)) {
|
||||
registerExtension(JavaElementFinder(project), disposable)
|
||||
registerExtension(PsiElementFinderImpl(project), disposable)
|
||||
}
|
||||
}
|
||||
}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
package org.jetbrains.kotlin.analysis.api.standalone.base.project.structure
|
||||
|
||||
import com.intellij.mock.MockApplication
|
||||
import com.intellij.mock.MockProject
|
||||
import com.intellij.openapi.Disposable
|
||||
|
||||
interface AnalysisApiStandaloneServiceRegistrar {
|
||||
fun registerApplicationServices(application: MockApplication)
|
||||
|
||||
fun registerProjectExtensionPoints(project: MockProject)
|
||||
|
||||
fun registerProjectServices(project: MockProject)
|
||||
|
||||
fun registerProjectModelServices(project: MockProject, disposable: Disposable)
|
||||
}
|
||||
@@ -14,6 +14,7 @@ dependencies {
|
||||
api(project(":analysis:symbol-light-classes"))
|
||||
api(project(":analysis:decompiled:light-classes-for-decompiled"))
|
||||
api(project(":analysis:analysis-api-standalone:analysis-api-standalone-base"))
|
||||
implementation(project(":analysis:analysis-api-standalone:analysis-api-fir-standalone-base"))
|
||||
testApi(projectTests(":analysis:analysis-test-framework"))
|
||||
testApi(projectTests(":analysis:analysis-api-impl-base"))
|
||||
testApi(projectTests(":analysis:analysis-api-fir"))
|
||||
|
||||
-26
@@ -1,26 +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.MockProject;
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirGlobalResolveComponents;
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirResolveSessionService;
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.LLFirSessionCache;
|
||||
|
||||
@SuppressWarnings("KotlinInternalInJava")
|
||||
class RegisterComponentService {
|
||||
static void registerLLFirSessionCache(MockProject project) {
|
||||
project.registerService(LLFirSessionCache.class, new LLFirSessionCache(project));
|
||||
}
|
||||
|
||||
static void registerLLFirGlobalResolveComponents(MockProject project) {
|
||||
project.registerService(LLFirGlobalResolveComponents.class, new LLFirGlobalResolveComponents(project));
|
||||
}
|
||||
|
||||
static void registerLLFirResolveSessionService(MockProject project) {
|
||||
project.registerService(LLFirResolveSessionService.class, new LLFirResolveSessionService(project));
|
||||
}
|
||||
}
|
||||
+10
-41
@@ -10,22 +10,13 @@ import com.intellij.openapi.application.Application
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.util.Disposer
|
||||
import com.intellij.openapi.vfs.impl.jar.CoreJarFileSystem
|
||||
import com.intellij.psi.PsiElementFinder
|
||||
import com.intellij.psi.impl.PsiElementFinderImpl
|
||||
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.fir.references.ReadWriteAccessCheckerFirImpl
|
||||
import org.jetbrains.kotlin.analysis.api.impl.base.references.HLApiReferenceProviderService
|
||||
import org.jetbrains.kotlin.analysis.api.lifetime.KtDefaultLifetimeTokenProvider
|
||||
import org.jetbrains.kotlin.analysis.api.lifetime.KtReadActionConfinementDefaultLifetimeTokenProvider
|
||||
import org.jetbrains.kotlin.analysis.api.session.KtAnalysisSessionProvider
|
||||
import org.jetbrains.kotlin.analysis.api.standalone.base.project.structure.FirStandaloneServiceRegistrar
|
||||
import org.jetbrains.kotlin.analysis.api.standalone.base.project.structure.StandaloneProjectFactory
|
||||
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.low.level.api.fir.project.structure.JvmFirDeserializedSymbolProviderFactory
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.LLFirBuiltinsSessionFactory
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.LLFirSessionConfigurator
|
||||
import org.jetbrains.kotlin.analysis.project.structure.KtModuleScopeProvider
|
||||
import org.jetbrains.kotlin.analysis.project.structure.KtModuleScopeProviderImpl
|
||||
import org.jetbrains.kotlin.analysis.project.structure.ProjectStructureProvider
|
||||
@@ -37,20 +28,13 @@ 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.cli.jvm.compiler.KotlinCoreProjectEnvironment
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.setupIdeaStandaloneExecution
|
||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||
import org.jetbrains.kotlin.extensions.ProjectExtensionDescriptor
|
||||
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.idea.references.ReadWriteAccessChecker
|
||||
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
|
||||
import kotlin.contracts.ExperimentalContracts
|
||||
import kotlin.contracts.InvocationKind
|
||||
@@ -75,6 +59,11 @@ public class StandaloneAnalysisAPISessionBuilder(
|
||||
applicationDisposable,
|
||||
)
|
||||
|
||||
|
||||
init {
|
||||
FirStandaloneServiceRegistrar.registerApplicationServices(kotlinCoreProjectEnvironment.environment.application)
|
||||
}
|
||||
|
||||
public val application: Application = kotlinCoreProjectEnvironment.environment.application
|
||||
|
||||
public val project: Project = kotlinCoreProjectEnvironment.project
|
||||
@@ -112,10 +101,6 @@ public class StandaloneAnalysisAPISessionBuilder(
|
||||
}
|
||||
}
|
||||
|
||||
private fun registerProjectExtensionPoints() {
|
||||
LLFirSessionConfigurator.registerExtensionPoint(project)
|
||||
}
|
||||
|
||||
public fun <T : Any> registerProjectExtensionPoint(extensionDescriptor: ProjectExtensionDescriptor<T>) {
|
||||
extensionDescriptor.registerExtensionPoint(project)
|
||||
}
|
||||
@@ -127,6 +112,10 @@ public class StandaloneAnalysisAPISessionBuilder(
|
||||
) {
|
||||
val project = kotlinCoreProjectEnvironment.project
|
||||
project.apply {
|
||||
FirStandaloneServiceRegistrar.registerProjectServices(project)
|
||||
FirStandaloneServiceRegistrar.registerProjectExtensionPoints(project)
|
||||
FirStandaloneServiceRegistrar.registerProjectModelServices(project, kotlinCoreProjectEnvironment.parentDisposable)
|
||||
|
||||
registerService(KotlinModificationTrackerFactory::class.java, KotlinStaticModificationTrackerFactory::class.java)
|
||||
registerService(KtDefaultLifetimeTokenProvider::class.java, KtReadActionConfinementDefaultLifetimeTokenProvider::class.java)
|
||||
|
||||
@@ -144,7 +133,6 @@ public class StandaloneAnalysisAPISessionBuilder(
|
||||
registerService(KotlinDeclarationProviderMerger::class.java, KotlinStaticDeclarationProviderMerger(this))
|
||||
registerService(KotlinPackageProviderFactory::class.java, KotlinStaticPackageProviderFactory(project, ktFiles))
|
||||
|
||||
registerService(KtAnalysisSessionProvider::class.java, KtFirAnalysisSessionProvider(this))
|
||||
registerService(
|
||||
FirSealedClassInheritorsProcessorFactory::class.java,
|
||||
object : FirSealedClassInheritorsProcessorFactory() {
|
||||
@@ -153,29 +141,12 @@ public class StandaloneAnalysisAPISessionBuilder(
|
||||
}
|
||||
}
|
||||
)
|
||||
registerService(LLFirBuiltinsSessionFactory::class.java, LLFirBuiltinsSessionFactory(this))
|
||||
RegisterComponentService.registerLLFirSessionCache(this)
|
||||
RegisterComponentService.registerLLFirGlobalResolveComponents(this)
|
||||
|
||||
registerService(KotlinReferenceProvidersService::class.java, HLApiReferenceProviderService::class.java)
|
||||
registerService(KotlinReferenceProviderContributor::class.java, KotlinFirReferenceContributor::class.java)
|
||||
|
||||
RegisterComponentService.registerLLFirResolveSessionService(this)
|
||||
registerService(
|
||||
PackagePartProviderFactory::class.java,
|
||||
KotlinStaticPackagePartProviderFactory(packagePartProvider)
|
||||
)
|
||||
|
||||
registerService(ClsJavaStubByVirtualFileCache::class.java, ClsJavaStubByVirtualFileCache())
|
||||
registerService(KotlinAsJavaSupport::class.java, SymbolKotlinAsJavaSupport(this))
|
||||
registerService(ReadWriteAccessChecker::class.java, ReadWriteAccessCheckerFirImpl())
|
||||
registerService(JvmFirDeserializedSymbolProviderFactory::class.java, JvmFirDeserializedSymbolProviderFactory())
|
||||
}
|
||||
|
||||
@Suppress("DEPRECATION")
|
||||
PsiElementFinder.EP.getPoint(project).registerExtension(JavaElementFinder(project))
|
||||
@Suppress("DEPRECATION")
|
||||
PsiElementFinder.EP.getPoint(project).registerExtension(PsiElementFinderImpl(project))
|
||||
}
|
||||
|
||||
private fun registerPsiDeclarationFromBinaryModuleProvider() {
|
||||
@@ -216,8 +187,6 @@ public class StandaloneAnalysisAPISessionBuilder(
|
||||
modules,
|
||||
allSourceFiles,
|
||||
)
|
||||
registerProjectExtensionPoints()
|
||||
|
||||
val project = kotlinCoreProjectEnvironment.project
|
||||
val ktFiles = allSourceFiles.filterIsInstance<KtFile>()
|
||||
val libraryRoots = StandaloneProjectFactory.getAllBinaryRoots(modules, kotlinCoreProjectEnvironment)
|
||||
|
||||
-1
@@ -133,7 +133,6 @@ internal fun configureProjectEnvironment(
|
||||
KotlinFirReferenceContributor::class.java
|
||||
)
|
||||
|
||||
RegisterComponentService.registerLLFirResolveSessionService(project)
|
||||
project.registerService(
|
||||
FirSealedClassInheritorsProcessorFactory::class.java,
|
||||
object : FirSealedClassInheritorsProcessorFactory() {
|
||||
|
||||
@@ -27,6 +27,7 @@ dependencies {
|
||||
implementation(project(":analysis:analysis-api-providers"))
|
||||
implementation(project(":analysis:analysis-api"))
|
||||
implementation(project(":analysis:analysis-internal-utils"))
|
||||
implementation(project(":analysis:analysis-api-standalone:analysis-api-standalone-base"))
|
||||
implementation(project(":kotlin-scripting-compiler"))
|
||||
implementation(project(":kotlin-scripting-common"))
|
||||
|
||||
@@ -40,6 +41,7 @@ dependencies {
|
||||
testApi(projectTests(":compiler:tests-common-new"))
|
||||
|
||||
testImplementation("org.opentest4j:opentest4j:1.2.0")
|
||||
testImplementation(project(":analysis:analysis-api-standalone:analysis-api-fir-standalone-base"))
|
||||
testApi(toolsJar())
|
||||
testApi(projectTests(":compiler:tests-common"))
|
||||
testApi(projectTests(":compiler:fir:analysis-tests:legacy-fir-tests"))
|
||||
@@ -73,6 +75,7 @@ allprojects {
|
||||
tasks.withType<org.jetbrains.kotlin.gradle.dsl.KotlinCompile<*>> {
|
||||
kotlinOptions {
|
||||
freeCompilerArgs += "-opt-in=org.jetbrains.kotlin.fir.symbols.SymbolInternals"
|
||||
freeCompilerArgs += "-opt-in=org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirInternals"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+4
-3
@@ -11,7 +11,8 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve.LLFirLazyRes
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.LLFirSession
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
|
||||
internal class LLFirGlobalResolveComponents(val project: Project) {
|
||||
@LLFirInternals
|
||||
class LLFirGlobalResolveComponents(val project: Project) {
|
||||
companion object {
|
||||
fun getInstance(project: Project): LLFirGlobalResolveComponents {
|
||||
return project.getService(LLFirGlobalResolveComponents::class.java)
|
||||
@@ -22,6 +23,6 @@ internal class LLFirGlobalResolveComponents(val project: Project) {
|
||||
}
|
||||
}
|
||||
|
||||
val checker: LLFirLazyResolveContractChecker = LLFirLazyResolveContractChecker()
|
||||
val lockProvider: LLFirLockProvider = LLFirLockProvider(checker)
|
||||
internal val checker: LLFirLazyResolveContractChecker = LLFirLazyResolveContractChecker()
|
||||
internal val lockProvider: LLFirLockProvider = LLFirLockProvider(checker)
|
||||
}
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
/*
|
||||
* Copyright 2010-2023 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.low.level.api.fir
|
||||
|
||||
@RequiresOptIn("Internal Low Level API component which should not be used outside the Low Level API module as it does not have any compatibility guarantees")
|
||||
annotation class LLFirInternals
|
||||
+4
-2
@@ -10,12 +10,13 @@ import com.intellij.psi.util.CachedValue
|
||||
import com.intellij.psi.util.CachedValueProvider
|
||||
import com.intellij.psi.util.CachedValuesManager
|
||||
import com.intellij.util.containers.CollectionFactory
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirInternals
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.checkCanceled
|
||||
import org.jetbrains.kotlin.analysis.project.structure.*
|
||||
import org.jetbrains.kotlin.fir.FirModuleDataImpl
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.PrivateSessionConstructor
|
||||
import org.jetbrains.kotlin.fir.session.*
|
||||
import org.jetbrains.kotlin.fir.session.registerModuleData
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.platform.JsPlatform
|
||||
import org.jetbrains.kotlin.platform.jvm.JvmPlatform
|
||||
@@ -24,7 +25,8 @@ import org.jetbrains.kotlin.platform.konan.NativePlatform
|
||||
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformAnalyzerServices
|
||||
import java.util.concurrent.ConcurrentMap
|
||||
|
||||
internal class LLFirSessionCache(private val project: Project) {
|
||||
@LLFirInternals
|
||||
class LLFirSessionCache(private val project: Project) {
|
||||
companion object {
|
||||
fun getInstance(project: Project): LLFirSessionCache {
|
||||
return project.getService(LLFirSessionCache::class.java)
|
||||
|
||||
+3
-1
@@ -9,6 +9,7 @@ import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
import com.intellij.psi.search.DelegatingGlobalSearchScope
|
||||
import com.intellij.psi.search.GlobalSearchScope
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirInternals
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.JvmFirDeserializedSymbolProviderFactory
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.LLFirModuleData
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.createJavaSymbolProvider
|
||||
@@ -21,7 +22,8 @@ import org.jetbrains.kotlin.fir.scopes.FirKotlinScopeProvider
|
||||
import org.jetbrains.kotlin.load.kotlin.PackagePartProvider
|
||||
import org.jetbrains.kotlin.serialization.deserialization.builtins.BuiltInSerializerProtocol
|
||||
|
||||
internal class JvmStubBasedDeserializedSymbolProviderFactory : JvmFirDeserializedSymbolProviderFactory() {
|
||||
@LLFirInternals
|
||||
class JvmStubBasedDeserializedSymbolProviderFactory : JvmFirDeserializedSymbolProviderFactory() {
|
||||
override fun createJvmFirDeserializedSymbolProviders(
|
||||
project: Project,
|
||||
session: FirSession,
|
||||
|
||||
+10
-42
@@ -7,71 +7,39 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir.test.base
|
||||
|
||||
import com.intellij.mock.MockApplication
|
||||
import com.intellij.mock.MockProject
|
||||
import com.intellij.psi.PsiElementFinder
|
||||
import com.intellij.psi.impl.PsiElementFinderImpl
|
||||
import org.jetbrains.kotlin.analysis.api.KtAnalysisApiInternals
|
||||
import org.jetbrains.kotlin.analysis.api.fir.KtFirAnalysisSessionProvider
|
||||
import org.jetbrains.kotlin.analysis.api.fir.references.ReadWriteAccessCheckerFirImpl
|
||||
import org.jetbrains.kotlin.analysis.api.session.KtAnalysisSessionProvider
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirGlobalResolveComponents
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirResolveSessionService
|
||||
import org.jetbrains.kotlin.analysis.api.standalone.base.project.structure.FirStandaloneServiceRegistrar
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.services.FirSealedClassInheritorsProcessorFactory
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.JvmFirDeserializedSymbolProviderFactory
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.LLFirBuiltinsSessionFactory
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.services.NoOpKtCompilerPluginsProvider
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.services.LLFirSealedClassInheritorsProcessorFactoryForTests
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.services.NoOpKtCompilerPluginsProvider
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.services.PackagePartProviderTestImpl
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.stubBased.deserialization.JvmStubBasedDeserializedSymbolProviderFactory
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.LLFirSessionCache
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.LLFirSessionConfigurator
|
||||
import org.jetbrains.kotlin.analysis.project.structure.KtCompilerPluginsProvider
|
||||
import org.jetbrains.kotlin.analysis.providers.PackagePartProviderFactory
|
||||
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiTestServiceRegistrar
|
||||
import org.jetbrains.kotlin.asJava.KotlinAsJavaSupport
|
||||
import org.jetbrains.kotlin.asJava.finder.JavaElementFinder
|
||||
import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension
|
||||
import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrarAdapter
|
||||
import org.jetbrains.kotlin.idea.references.KotlinFirReferenceContributor
|
||||
import org.jetbrains.kotlin.idea.references.KotlinReferenceProviderContributor
|
||||
import org.jetbrains.kotlin.idea.references.ReadWriteAccessChecker
|
||||
import org.jetbrains.kotlin.light.classes.symbol.SymbolKotlinAsJavaSupport
|
||||
import org.jetbrains.kotlin.test.TestInfrastructureInternals
|
||||
import org.jetbrains.kotlin.test.impl.testConfiguration
|
||||
import org.jetbrains.kotlin.test.services.TestServices
|
||||
|
||||
object AnalysisApiFirTestServiceRegistrar : AnalysisApiTestServiceRegistrar() {
|
||||
override fun registerProjectExtensionPoints(project: MockProject, testServices: TestServices) {
|
||||
IrGenerationExtension.registerExtensionPoint(project)
|
||||
FirExtensionRegistrarAdapter.registerExtensionPoint(project)
|
||||
LLFirSessionConfigurator.registerExtensionPoint(project)
|
||||
FirStandaloneServiceRegistrar.registerProjectExtensionPoints(project)
|
||||
}
|
||||
|
||||
@OptIn(KtAnalysisApiInternals::class)
|
||||
override fun registerProjectServices(project: MockProject, testServices: TestServices) {
|
||||
project.apply {
|
||||
registerService(KtAnalysisSessionProvider::class.java, KtFirAnalysisSessionProvider(this))
|
||||
registerService(FirSealedClassInheritorsProcessorFactory::class.java, LLFirSealedClassInheritorsProcessorFactoryForTests())
|
||||
registerService(LLFirResolveSessionService::class.java)
|
||||
registerService(LLFirSessionCache::class.java)
|
||||
registerService(LLFirGlobalResolveComponents::class.java)
|
||||
registerService(LLFirBuiltinsSessionFactory::class.java)
|
||||
registerService(PackagePartProviderFactory::class.java, PackagePartProviderTestImpl(testServices))
|
||||
FirStandaloneServiceRegistrar.registerProjectServices(project)
|
||||
|
||||
registerService(KotlinAsJavaSupport::class.java, SymbolKotlinAsJavaSupport(project))
|
||||
registerService(FirSealedClassInheritorsProcessorFactory::class.java, LLFirSealedClassInheritorsProcessorFactoryForTests())
|
||||
registerService(PackagePartProviderFactory::class.java, PackagePartProviderTestImpl(testServices))
|
||||
registerService(KtCompilerPluginsProvider::class.java, NoOpKtCompilerPluginsProvider)
|
||||
registerService(ReadWriteAccessChecker::class.java, ReadWriteAccessCheckerFirImpl())
|
||||
registerService(KotlinReferenceProviderContributor::class.java, KotlinFirReferenceContributor::class.java)
|
||||
registerService(JvmFirDeserializedSymbolProviderFactory::class.java, JvmStubBasedDeserializedSymbolProviderFactory::class.java)
|
||||
}
|
||||
}
|
||||
|
||||
@OptIn(TestInfrastructureInternals::class)
|
||||
override fun registerProjectModelServices(project: MockProject, testServices: TestServices) {
|
||||
with(PsiElementFinder.EP.getPoint(project)) {
|
||||
registerExtension(JavaElementFinder(project), testServices.testConfiguration.rootDisposable)
|
||||
registerExtension(PsiElementFinderImpl(project), testServices.testConfiguration.rootDisposable)
|
||||
}
|
||||
FirStandaloneServiceRegistrar.registerProjectModelServices(project, testServices.testConfiguration.rootDisposable)
|
||||
}
|
||||
|
||||
override fun registerApplicationServices(application: MockApplication, testServices: TestServices) {}
|
||||
override fun registerApplicationServices(application: MockApplication, testServices: TestServices) {
|
||||
FirStandaloneServiceRegistrar.registerApplicationServices(application)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ plugins {
|
||||
publishJarsForIde(
|
||||
listOf(
|
||||
":analysis:analysis-api-standalone:analysis-api-standalone-base",
|
||||
":analysis:analysis-api-standalone:analysis-api-fir-standalone-base",
|
||||
":analysis:analysis-api-standalone",
|
||||
)
|
||||
)
|
||||
|
||||
@@ -552,6 +552,7 @@ include ":generators:analysis-api-generator",
|
||||
":analysis:project-structure",
|
||||
":analysis:analysis-api-standalone",
|
||||
":analysis:analysis-api-standalone:analysis-api-standalone-base",
|
||||
":analysis:analysis-api-standalone:analysis-api-fir-standalone-base",
|
||||
":analysis:analysis-api-fe10",
|
||||
":analysis:decompiled:decompiler-to-psi",
|
||||
":analysis:decompiled:decompiler-to-stubs",
|
||||
|
||||
Reference in New Issue
Block a user