AA standalone: register LL FIR session configurator extension
Also, introduce an API to register user's own project extension points
This commit is contained in:
+11
@@ -24,6 +24,7 @@ import org.jetbrains.kotlin.analysis.api.standalone.base.project.structure.Stand
|
|||||||
import org.jetbrains.kotlin.analysis.decompiled.light.classes.ClsJavaStubByVirtualFileCache
|
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.api.services.FirSealedClassInheritorsProcessorFactory
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.LLFirBuiltinsSessionFactory
|
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.KtModuleScopeProvider
|
||||||
import org.jetbrains.kotlin.analysis.project.structure.KtModuleScopeProviderImpl
|
import org.jetbrains.kotlin.analysis.project.structure.KtModuleScopeProviderImpl
|
||||||
import org.jetbrains.kotlin.analysis.project.structure.ProjectStructureProvider
|
import org.jetbrains.kotlin.analysis.project.structure.ProjectStructureProvider
|
||||||
@@ -40,6 +41,7 @@ import org.jetbrains.kotlin.asJava.finder.JavaElementFinder
|
|||||||
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreProjectEnvironment
|
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreProjectEnvironment
|
||||||
import org.jetbrains.kotlin.cli.jvm.compiler.setupIdeaStandaloneExecution
|
import org.jetbrains.kotlin.cli.jvm.compiler.setupIdeaStandaloneExecution
|
||||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
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.SealedClassInheritorsProvider
|
||||||
import org.jetbrains.kotlin.fir.declarations.SealedClassInheritorsProviderImpl
|
import org.jetbrains.kotlin.fir.declarations.SealedClassInheritorsProviderImpl
|
||||||
import org.jetbrains.kotlin.idea.references.KotlinFirReferenceContributor
|
import org.jetbrains.kotlin.idea.references.KotlinFirReferenceContributor
|
||||||
@@ -109,6 +111,14 @@ public class StandaloneAnalysisAPISessionBuilder(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun registerProjectExtensionPoints() {
|
||||||
|
LLFirSessionConfigurator.registerExtensionPoint(project)
|
||||||
|
}
|
||||||
|
|
||||||
|
public fun <T : Any> registerProjectExtensionPoint(extensionDescriptor: ProjectExtensionDescriptor<T>) {
|
||||||
|
extensionDescriptor.registerExtensionPoint(project)
|
||||||
|
}
|
||||||
|
|
||||||
@OptIn(KtAnalysisApiInternals::class)
|
@OptIn(KtAnalysisApiInternals::class)
|
||||||
private fun registerProjectServices(
|
private fun registerProjectServices(
|
||||||
ktFiles: List<KtFile>,
|
ktFiles: List<KtFile>,
|
||||||
@@ -203,6 +213,7 @@ public class StandaloneAnalysisAPISessionBuilder(
|
|||||||
modules,
|
modules,
|
||||||
allSourceFiles,
|
allSourceFiles,
|
||||||
)
|
)
|
||||||
|
registerProjectExtensionPoints()
|
||||||
|
|
||||||
val project = kotlinCoreProjectEnvironment.project
|
val project = kotlinCoreProjectEnvironment.project
|
||||||
val ktFiles = allSourceFiles.filterIsInstance<KtFile>()
|
val ktFiles = allSourceFiles.filterIsInstance<KtFile>()
|
||||||
|
|||||||
Reference in New Issue
Block a user