[FIR] Introduce module :fir:entrypoint and FirSessionFactory for creating sessions
This commit is contained in:
+5
-5
@@ -30,12 +30,11 @@ import org.jetbrains.kotlin.fir.extensions.BunchOfRegisteredExtensions
|
||||
import org.jetbrains.kotlin.fir.extensions.FirExtensionService
|
||||
import org.jetbrains.kotlin.fir.extensions.extensionService
|
||||
import org.jetbrains.kotlin.fir.extensions.registerExtensions
|
||||
import org.jetbrains.kotlin.fir.java.FirJavaModuleBasedSession
|
||||
import org.jetbrains.kotlin.fir.java.FirLibrarySession
|
||||
import org.jetbrains.kotlin.fir.java.FirProjectSessionProvider
|
||||
import org.jetbrains.kotlin.fir.lightTree.LightTree2Fir
|
||||
import org.jetbrains.kotlin.fir.resolve.firProvider
|
||||
import org.jetbrains.kotlin.fir.resolve.providers.impl.FirProviderImpl
|
||||
import org.jetbrains.kotlin.fir.session.FirSessionFactory
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||
@@ -76,7 +75,8 @@ abstract class AbstractFirBaseDiagnosticsTest : BaseDiagnosticsTest() {
|
||||
|
||||
//For BuiltIns, registered in sessionProvider automatically
|
||||
val allProjectScope = GlobalSearchScope.allScope(project)
|
||||
FirLibrarySession.create(
|
||||
|
||||
FirSessionFactory.createLibrarySession(
|
||||
builtInsModuleInfo, sessionProvider, allProjectScope, project,
|
||||
environment.createPackagePartProvider(allProjectScope)
|
||||
).also {
|
||||
@@ -88,7 +88,7 @@ abstract class AbstractFirBaseDiagnosticsTest : BaseDiagnosticsTest() {
|
||||
val scope = TopDownAnalyzerFacadeForJVM.newModuleSearchScope(
|
||||
project,
|
||||
moduleFiles.mapNotNull { it.ktFile })
|
||||
FirJavaModuleBasedSession.create(info, sessionProvider, scope).also {
|
||||
FirSessionFactory.createJavaModuleBasedSession(info, sessionProvider, scope).also {
|
||||
registerFirExtensions(it.extensionService)
|
||||
configureSession(it)
|
||||
}
|
||||
@@ -334,4 +334,4 @@ abstract class AbstractFirBaseDiagnosticsTest : BaseDiagnosticsTest() {
|
||||
}
|
||||
|
||||
protected open fun configureSession(session: FirSession) {}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,9 +11,8 @@ import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
||||
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.FirJavaModuleBasedSession
|
||||
import org.jetbrains.kotlin.fir.java.FirLibrarySession
|
||||
import org.jetbrains.kotlin.fir.java.FirProjectSessionProvider
|
||||
import org.jetbrains.kotlin.fir.session.FirSessionFactory
|
||||
import org.jetbrains.kotlin.load.kotlin.PackagePartProvider
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
|
||||
@@ -22,7 +21,7 @@ fun createSession(
|
||||
sourceScope: GlobalSearchScope,
|
||||
librariesScope: GlobalSearchScope = GlobalSearchScope.notScope(sourceScope),
|
||||
moduleName: String = "TestModule"
|
||||
) = createSession(environment.project, sourceScope, librariesScope, moduleName, environment::createPackagePartProvider)
|
||||
): FirSession = createSession(environment.project, sourceScope, librariesScope, moduleName, environment::createPackagePartProvider)
|
||||
|
||||
fun createSession(
|
||||
project: Project,
|
||||
@@ -33,7 +32,7 @@ fun createSession(
|
||||
): FirSession {
|
||||
val moduleInfo = FirTestModuleInfo(name = Name.identifier(moduleName))
|
||||
val provider = FirProjectSessionProvider(project)
|
||||
return FirJavaModuleBasedSession.create(moduleInfo, provider, sourceScope).also {
|
||||
return FirSessionFactory.createJavaModuleBasedSession(moduleInfo, provider, sourceScope).also {
|
||||
createSessionForDependencies(project, provider, moduleInfo, librariesScope, packagePartProvider)
|
||||
it.extensionService.registerExtensions(BunchOfRegisteredExtensions.empty())
|
||||
}
|
||||
@@ -48,7 +47,7 @@ private fun createSessionForDependencies(
|
||||
) {
|
||||
val dependenciesInfo = FirTestModuleInfo(name = Name.identifier(moduleInfo.name.identifier + ".dependencies"))
|
||||
moduleInfo.dependencies.add(dependenciesInfo)
|
||||
FirLibrarySession.create(
|
||||
FirSessionFactory.createLibrarySession(
|
||||
dependenciesInfo, provider, librariesScope, project, packagePartProvider(librariesScope)
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user