[FIR] Introduce module :fir:entrypoint and FirSessionFactory for creating sessions
This commit is contained in:
@@ -15,6 +15,7 @@ dependencies {
|
||||
compile(project(":compiler:fir:checkers"))
|
||||
compile(project(":compiler:fir:java"))
|
||||
compile(project(":compiler:fir:jvm"))
|
||||
implementation(project(":compiler:fir:entrypoint"))
|
||||
compile(intellijDep())
|
||||
compile(intellijCoreDep())
|
||||
|
||||
|
||||
+5
-3
@@ -7,16 +7,17 @@ package org.jetbrains.kotlin.idea.fir.low.level.api.sessions
|
||||
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.psi.search.GlobalSearchScope
|
||||
import org.jetbrains.kotlin.fir.PrivateSessionConstructor
|
||||
import org.jetbrains.kotlin.analyzer.ModuleInfo
|
||||
import org.jetbrains.kotlin.fir.java.JavaSymbolProvider
|
||||
import org.jetbrains.kotlin.fir.java.deserialization.KotlinDeserializedJvmSymbolsProvider
|
||||
import org.jetbrains.kotlin.fir.registerCommonComponents
|
||||
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider
|
||||
import org.jetbrains.kotlin.fir.resolve.providers.impl.FirBuiltinSymbolProvider
|
||||
import org.jetbrains.kotlin.fir.resolve.providers.impl.FirCloneableSymbolProvider
|
||||
import org.jetbrains.kotlin.fir.resolve.providers.impl.FirCompositeSymbolProvider
|
||||
import org.jetbrains.kotlin.fir.resolve.scopes.wrapScopeWithJvmMapped
|
||||
import org.jetbrains.kotlin.fir.scopes.KotlinScopeProvider
|
||||
import org.jetbrains.kotlin.fir.session.registerCommonComponents
|
||||
import org.jetbrains.kotlin.idea.caches.project.ModuleSourceInfo
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.IDEPackagePartProvider
|
||||
import org.jetbrains.kotlin.idea.fir.low.level.api.IdeSessionComponents
|
||||
@@ -26,11 +27,12 @@ import org.jetbrains.kotlin.load.kotlin.VirtualFileFinderFactory
|
||||
/**
|
||||
* [org.jetbrains.kotlin.fir.FirSession] responsible for all libraries analysing module transitively depends on
|
||||
*/
|
||||
@OptIn(PrivateSessionConstructor::class)
|
||||
internal class FirIdeLibrariesSession private constructor(
|
||||
override val moduleInfo: ModuleInfo,
|
||||
moduleInfo: ModuleInfo,
|
||||
sessionProvider: FirIdeSessionProvider,
|
||||
override val scope: GlobalSearchScope
|
||||
) : FirIdeSession(sessionProvider) {
|
||||
) : FirIdeSession(moduleInfo, sessionProvider) {
|
||||
companion object {
|
||||
fun create(
|
||||
moduleInfo: ModuleSourceInfo,
|
||||
|
||||
+9
-3
@@ -6,8 +6,14 @@
|
||||
package org.jetbrains.kotlin.idea.fir.low.level.api.sessions
|
||||
|
||||
import com.intellij.psi.search.GlobalSearchScope
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.analyzer.ModuleInfo
|
||||
import org.jetbrains.kotlin.fir.FirModuleBasedSession
|
||||
import org.jetbrains.kotlin.fir.PrivateSessionConstructor
|
||||
|
||||
internal abstract class FirIdeSession(sessionProvider: FirIdeSessionProvider) : FirSession(sessionProvider) {
|
||||
@OptIn(PrivateSessionConstructor::class)
|
||||
internal abstract class FirIdeSession(
|
||||
moduleInfo: ModuleInfo,
|
||||
sessionProvider: FirIdeSessionProvider
|
||||
) : FirModuleBasedSession(moduleInfo, sessionProvider) {
|
||||
abstract val scope: GlobalSearchScope
|
||||
}
|
||||
}
|
||||
|
||||
+7
-4
@@ -10,12 +10,10 @@ import com.intellij.openapi.project.Project
|
||||
import com.intellij.psi.search.GlobalSearchScope
|
||||
import org.jetbrains.kotlin.analyzer.ModuleInfo
|
||||
import org.jetbrains.kotlin.fir.*
|
||||
import org.jetbrains.kotlin.fir.analysis.registerCheckersComponent
|
||||
import org.jetbrains.kotlin.fir.extensions.BunchOfRegisteredExtensions
|
||||
import org.jetbrains.kotlin.fir.extensions.extensionService
|
||||
import org.jetbrains.kotlin.fir.extensions.registerExtensions
|
||||
import org.jetbrains.kotlin.fir.java.JavaSymbolProvider
|
||||
import org.jetbrains.kotlin.fir.java.registerJavaSpecificComponents
|
||||
import org.jetbrains.kotlin.fir.resolve.firSymbolProvider
|
||||
import org.jetbrains.kotlin.fir.resolve.providers.FirProvider
|
||||
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider
|
||||
@@ -23,6 +21,10 @@ import org.jetbrains.kotlin.fir.resolve.providers.impl.FirCompositeSymbolProvide
|
||||
import org.jetbrains.kotlin.fir.resolve.scopes.wrapScopeWithJvmMapped
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.PhasedFirFileResolver
|
||||
import org.jetbrains.kotlin.fir.scopes.KotlinScopeProvider
|
||||
import org.jetbrains.kotlin.fir.session.registerCheckersComponent
|
||||
import org.jetbrains.kotlin.fir.session.registerCommonComponents
|
||||
import org.jetbrains.kotlin.fir.session.registerJavaSpecificComponents
|
||||
import org.jetbrains.kotlin.fir.session.registerResolveComponents
|
||||
import org.jetbrains.kotlin.idea.caches.project.ModuleSourceInfo
|
||||
import org.jetbrains.kotlin.idea.fir.low.level.api.lazy.resolve.FirLazyDeclarationResolver
|
||||
import org.jetbrains.kotlin.idea.fir.low.level.api.FirPhaseRunner
|
||||
@@ -36,12 +38,13 @@ import org.jetbrains.kotlin.idea.fir.low.level.api.util.collectTransitiveDepende
|
||||
/**
|
||||
* [org.jetbrains.kotlin.fir.FirSession] responsible for all Kotlin & Java source modules analysing module transitively depends on
|
||||
*/
|
||||
@OptIn(PrivateSessionConstructor::class)
|
||||
internal class FirIdeSourcesSession private constructor(
|
||||
override val moduleInfo: ModuleInfo?,
|
||||
moduleInfo: ModuleInfo,
|
||||
sessionProvider: FirIdeSessionProvider,
|
||||
override val scope: GlobalSearchScope,
|
||||
val firFileBuilder: FirFileBuilder,
|
||||
) : FirIdeSession(sessionProvider) {
|
||||
) : FirIdeSession(moduleInfo, sessionProvider) {
|
||||
val cache get() = firIdeProvider.cache
|
||||
|
||||
companion object {
|
||||
|
||||
+3
-2
@@ -24,6 +24,7 @@ import org.jetbrains.kotlin.fir.resolve.firProvider
|
||||
import org.jetbrains.kotlin.fir.resolve.providers.impl.FirProviderImpl
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.FirTransformerBasedResolveProcessor
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.createAllTransformerBasedResolveProcessors
|
||||
import org.jetbrains.kotlin.fir.session.FirSessionFactory
|
||||
import org.jetbrains.kotlin.idea.KotlinFileType
|
||||
import org.jetbrains.kotlin.idea.caches.project.IdeaModuleInfo
|
||||
import org.jetbrains.kotlin.idea.caches.project.isLibraryClasses
|
||||
@@ -59,14 +60,14 @@ abstract class AbstractFirMultiModuleResolveTest : AbstractMultiModuleTest() {
|
||||
|
||||
private fun createSession(module: Module, provider: FirProjectSessionProvider): FirJavaModuleBasedSession {
|
||||
val moduleInfo = module.productionSourceInfo()!!
|
||||
return FirJavaModuleBasedSession.create(moduleInfo, provider, moduleInfo.contentScope()).also {
|
||||
return FirSessionFactory.createJavaModuleBasedSession(moduleInfo, provider, moduleInfo.contentScope()).also {
|
||||
it.extensionService.registerExtensions(BunchOfRegisteredExtensions.empty())
|
||||
}
|
||||
}
|
||||
|
||||
private fun createLibrarySession(moduleInfo: IdeaModuleInfo, provider: FirProjectSessionProvider): FirLibrarySession {
|
||||
val contentScope = moduleInfo.contentScope()
|
||||
return FirLibrarySession.create(moduleInfo, provider, contentScope, project, IDEPackagePartProvider(contentScope))
|
||||
return FirSessionFactory.createLibrarySession(moduleInfo, provider, contentScope, project, IDEPackagePartProvider(contentScope))
|
||||
}
|
||||
|
||||
private fun doFirResolveTest(dirPath: String) {
|
||||
|
||||
Reference in New Issue
Block a user