From 5282e6032838befcb6d1a8c7a77cd47dde92af8c Mon Sep 17 00:00:00 2001 From: Jinseong Jeon Date: Wed, 19 Apr 2023 21:21:17 -0700 Subject: [PATCH] AA standalone: register LL FIR session configurator extension Also, introduce an API to register user's own project extension points --- .../standalone/StandaloneAnalysisAPISessionBuilder.kt | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/api/standalone/StandaloneAnalysisAPISessionBuilder.kt b/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/api/standalone/StandaloneAnalysisAPISessionBuilder.kt index 20170f2c21e..6e58dae80d2 100644 --- a/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/api/standalone/StandaloneAnalysisAPISessionBuilder.kt +++ b/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/api/standalone/StandaloneAnalysisAPISessionBuilder.kt @@ -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.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.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 @@ -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.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 @@ -109,6 +111,14 @@ public class StandaloneAnalysisAPISessionBuilder( } } + private fun registerProjectExtensionPoints() { + LLFirSessionConfigurator.registerExtensionPoint(project) + } + + public fun registerProjectExtensionPoint(extensionDescriptor: ProjectExtensionDescriptor) { + extensionDescriptor.registerExtensionPoint(project) + } + @OptIn(KtAnalysisApiInternals::class) private fun registerProjectServices( ktFiles: List, @@ -203,6 +213,7 @@ public class StandaloneAnalysisAPISessionBuilder( modules, allSourceFiles, ) + registerProjectExtensionPoints() val project = kotlinCoreProjectEnvironment.project val ktFiles = allSourceFiles.filterIsInstance()