[FIR] Move createSessionForTests, createSessionForTests into FirTestSessionFactoryHelper

This commit is contained in:
Ivan Kochurkin
2022-10-05 22:20:16 +02:00
committed by Space Team
parent 1deb253bac
commit a4ad8d59b6
8 changed files with 101 additions and 94 deletions
@@ -26,9 +26,9 @@ import org.jetbrains.kotlin.context.withModule
import org.jetbrains.kotlin.context.withProject
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
import org.jetbrains.kotlin.diagnostics.Severity
import org.jetbrains.kotlin.fir.FirTestSessionFactoryHelper
import org.jetbrains.kotlin.fir.builder.PsiHandlingMode
import org.jetbrains.kotlin.fir.builder.RawFirBuilder
import org.jetbrains.kotlin.fir.createSessionForTests
import org.jetbrains.kotlin.fir.java.FirJavaElementFinder
import org.jetbrains.kotlin.fir.resolve.providers.firProvider
import org.jetbrains.kotlin.fir.resolve.providers.impl.FirProviderImpl
@@ -155,7 +155,7 @@ abstract class AbstractSimpleFileBenchmark {
private fun analyzeGreenFileIr(bh: Blackhole) {
val scope = GlobalSearchScope.filesScope(env.project, listOf(file.virtualFile))
.uniteWith(TopDownAnalyzerFacadeForJVM.AllJavaSourcesInProjectScope(env.project))
val session = createSessionForTests(env.toAbstractProjectEnvironment(), scope.toAbstractProjectFileSearchScope())
val session = FirTestSessionFactoryHelper.createSessionForTests(env.toAbstractProjectEnvironment(), scope.toAbstractProjectFileSearchScope())
val firProvider = session.firProvider as FirProviderImpl
val builder = RawFirBuilder(session, firProvider.kotlinScopeProvider, PsiHandlingMode.COMPILER)
@@ -42,7 +42,7 @@ abstract class AbstractFirLoadCompiledKotlin : AbstractFirLoadBinariesTest() {
val environment = KotlinCoreEnvironment.createForTests(testRootDisposable, configuration, EnvironmentConfigFiles.JVM_CONFIG_FILES)
prepareProjectExtensions(environment.project)
val sessionWithDependency = createSessionForTests(environment.toAbstractProjectEnvironment(), AbstractProjectFileSearchScope.EMPTY)
val sessionWithDependency = FirTestSessionFactoryHelper.createSessionForTests(environment.toAbstractProjectEnvironment(), AbstractProjectFileSearchScope.EMPTY)
val testDataDirectoryPath =
"compiler/fir/analysis-tests/testData/loadCompiledKotlin/" +
@@ -22,7 +22,7 @@ class BuiltInsDeserializationForFirTestCase : AbstractFirLoadBinariesTest() {
@OptIn(ObsoleteTestInfrastructure::class)
fun testBuiltInPackagesContent() {
val moduleDescriptor = BuiltinsTestUtils.compileBuiltinsModule(environment)
val session = createSessionForTests(
val session = FirTestSessionFactoryHelper.createSessionForTests(
environment.toAbstractProjectEnvironment(),
GlobalSearchScope.allScope(project).toAbstractProjectFileSearchScope()
)
@@ -20,7 +20,7 @@ import org.jetbrains.kotlin.ObsoleteTestInfrastructure
import org.jetbrains.kotlin.asJava.finder.JavaElementFinder
import org.jetbrains.kotlin.cli.jvm.compiler.*
import org.jetbrains.kotlin.codegen.forTestCompile.ForTestCompileRuntime
import org.jetbrains.kotlin.fir.createSessionForTests
import org.jetbrains.kotlin.fir.FirTestSessionFactoryHelper
import org.jetbrains.kotlin.fir.java.declarations.FirJavaClass
import org.jetbrains.kotlin.fir.renderer.FirRenderer
import org.jetbrains.kotlin.fir.resolve.providers.symbolProvider
@@ -132,7 +132,7 @@ abstract class AbstractFirTypeEnhancementTest : KtUsefulTestCase() {
val scope = GlobalSearchScope.filesScope(project, virtualFiles)
.uniteWith(TopDownAnalyzerFacadeForJVM.AllJavaSourcesInProjectScope(project))
val session = createSessionForTests(
val session = FirTestSessionFactoryHelper.createSessionForTests(
environment.toAbstractProjectEnvironment(),
scope.toAbstractProjectFileSearchScope()
)
@@ -129,7 +129,7 @@ class FirResolveModularizedTotalKotlinTest : AbstractModularizedTest() {
val scope = GlobalSearchScope.filesScope(project, ktFiles.map { it.virtualFile })
.uniteWith(TopDownAnalyzerFacadeForJVM.AllJavaSourcesInProjectScope(project))
val librariesScope = ProjectScope.getLibrariesScope(project)
val session = createSessionForTests(
val session = FirTestSessionFactoryHelper.createSessionForTests(
environment.toAbstractProjectEnvironment(),
scope.toAbstractProjectFileSearchScope(),
librariesScope.toAbstractProjectFileSearchScope(),
@@ -30,10 +30,10 @@ import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.config.JVMConfigurationKeys
import org.jetbrains.kotlin.config.languageVersionSettings
import org.jetbrains.kotlin.fir.FirAnalyzerFacade
import org.jetbrains.kotlin.fir.FirTestSessionFactoryHelper
import org.jetbrains.kotlin.fir.backend.jvm.FirJvmBackendClassResolver
import org.jetbrains.kotlin.fir.backend.jvm.FirJvmBackendExtension
import org.jetbrains.kotlin.fir.backend.jvm.JvmFir2IrExtensions
import org.jetbrains.kotlin.fir.createSessionForTests
import org.jetbrains.kotlin.ir.backend.jvm.jvmResolveLibraries
import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmIrMangler
import org.jetbrains.kotlin.load.kotlin.PackagePartProvider
@@ -105,7 +105,13 @@ object GenerationUtils {
val scope = GlobalSearchScope.filesScope(project, files.map { it.virtualFile })
.uniteWith(TopDownAnalyzerFacadeForJVM.AllJavaSourcesInProjectScope(project))
val librariesScope = ProjectScope.getLibrariesScope(project)
val session = createSessionForTests(project, scope, librariesScope, "main", getPackagePartProvider = packagePartProvider)
val session = FirTestSessionFactoryHelper.createSessionForTests(
project,
scope,
librariesScope,
"main",
getPackagePartProvider = packagePartProvider
)
// TODO: add running checkers and check that it's safe to compile
val firAnalyzerFacade = FirAnalyzerFacade(
@@ -0,0 +1,86 @@
/*
* Copyright 2010-2019 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.fir
import com.intellij.openapi.project.Project
import com.intellij.openapi.vfs.StandardFileSystems
import com.intellij.openapi.vfs.VirtualFileManager
import com.intellij.psi.search.GlobalSearchScope
import org.jetbrains.kotlin.ObsoleteTestInfrastructure
import org.jetbrains.kotlin.cli.jvm.compiler.PsiBasedProjectFileSearchScope
import org.jetbrains.kotlin.cli.jvm.compiler.VfsBasedProjectEnvironment
import org.jetbrains.kotlin.config.LanguageVersionSettings
import org.jetbrains.kotlin.config.LanguageVersionSettingsImpl
import org.jetbrains.kotlin.fir.session.FirSessionFactoryHelper
import org.jetbrains.kotlin.fir.session.environment.AbstractProjectEnvironment
import org.jetbrains.kotlin.fir.session.environment.AbstractProjectFileSearchScope
import org.jetbrains.kotlin.load.kotlin.PackagePartProvider
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformAnalyzerServices
import java.nio.file.Path
object FirTestSessionFactoryHelper {
@ObsoleteTestInfrastructure
fun createSessionForTests(
projectEnvironment: AbstractProjectEnvironment,
sourceScope: AbstractProjectFileSearchScope,
librariesScope: AbstractProjectFileSearchScope = !sourceScope,
moduleName: String = "TestModule",
friendsPaths: List<Path> = emptyList(),
languageVersionSettings: LanguageVersionSettings = LanguageVersionSettingsImpl.DEFAULT
): FirSession = FirSessionFactoryHelper.createSessionWithDependencies(
Name.identifier(moduleName),
JvmPlatforms.unspecifiedJvmPlatform,
JvmPlatformAnalyzerServices,
externalSessionProvider = null,
projectEnvironment,
languageVersionSettings,
sourceScope,
librariesScope,
lookupTracker = null,
enumWhenTracker = null,
incrementalCompilationContext = null,
extensionRegistrars = emptyList(),
needRegisterJavaElementFinder = true,
dependenciesConfigurator = {
friendDependencies(friendsPaths)
}
)
@ObsoleteTestInfrastructure
fun createSessionForTests(
project: Project,
sourceScope: GlobalSearchScope,
librariesScope: GlobalSearchScope,
moduleName: String = "TestModule",
friendsPaths: List<Path> = emptyList(),
getPackagePartProvider: (GlobalSearchScope) -> PackagePartProvider,
): FirSession {
return FirSessionFactoryHelper.createSessionWithDependencies(
Name.identifier(moduleName),
JvmPlatforms.unspecifiedJvmPlatform,
JvmPlatformAnalyzerServices,
externalSessionProvider = null,
VfsBasedProjectEnvironment(
project,
VirtualFileManager.getInstance().getFileSystem(StandardFileSystems.FILE_PROTOCOL),
getPackagePartProvider
),
languageVersionSettings = LanguageVersionSettingsImpl.DEFAULT,
PsiBasedProjectFileSearchScope(sourceScope),
PsiBasedProjectFileSearchScope(librariesScope),
lookupTracker = null,
enumWhenTracker = null,
incrementalCompilationContext = null,
extensionRegistrars = emptyList(),
needRegisterJavaElementFinder = true,
dependenciesConfigurator = {
friendDependencies(friendsPaths)
}
)
}
}
@@ -1,85 +0,0 @@
/*
* Copyright 2010-2019 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.fir
import com.intellij.openapi.project.Project
import com.intellij.openapi.vfs.StandardFileSystems
import com.intellij.openapi.vfs.VirtualFileManager
import com.intellij.psi.search.GlobalSearchScope
import org.jetbrains.kotlin.ObsoleteTestInfrastructure
import org.jetbrains.kotlin.cli.jvm.compiler.PsiBasedProjectFileSearchScope
import org.jetbrains.kotlin.cli.jvm.compiler.VfsBasedProjectEnvironment
import org.jetbrains.kotlin.config.LanguageVersionSettings
import org.jetbrains.kotlin.config.LanguageVersionSettingsImpl
import org.jetbrains.kotlin.fir.session.FirSessionFactoryHelper
import org.jetbrains.kotlin.fir.session.environment.AbstractProjectEnvironment
import org.jetbrains.kotlin.fir.session.environment.AbstractProjectFileSearchScope
import org.jetbrains.kotlin.load.kotlin.PackagePartProvider
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformAnalyzerServices
import java.nio.file.Path
@ObsoleteTestInfrastructure
fun createSessionForTests(
projectEnvironment: AbstractProjectEnvironment,
sourceScope: AbstractProjectFileSearchScope,
librariesScope: AbstractProjectFileSearchScope = !sourceScope,
moduleName: String = "TestModule",
friendsPaths: List<Path> = emptyList(),
languageVersionSettings: LanguageVersionSettings = LanguageVersionSettingsImpl.DEFAULT
): FirSession = FirSessionFactoryHelper.createSessionWithDependencies(
Name.identifier(moduleName),
JvmPlatforms.unspecifiedJvmPlatform,
JvmPlatformAnalyzerServices,
externalSessionProvider = null,
projectEnvironment,
languageVersionSettings,
sourceScope,
librariesScope,
lookupTracker = null,
enumWhenTracker = null,
incrementalCompilationContext = null,
extensionRegistrars = emptyList(),
needRegisterJavaElementFinder = true,
dependenciesConfigurator = {
friendDependencies(friendsPaths)
}
)
@ObsoleteTestInfrastructure
fun createSessionForTests(
project: Project,
sourceScope: GlobalSearchScope,
librariesScope: GlobalSearchScope,
moduleName: String = "TestModule",
friendsPaths: List<Path> = emptyList(),
getPackagePartProvider: (GlobalSearchScope) -> PackagePartProvider,
): FirSession {
return FirSessionFactoryHelper.createSessionWithDependencies(
Name.identifier(moduleName),
JvmPlatforms.unspecifiedJvmPlatform,
JvmPlatformAnalyzerServices,
externalSessionProvider = null,
VfsBasedProjectEnvironment(
project,
VirtualFileManager.getInstance().getFileSystem(StandardFileSystems.FILE_PROTOCOL),
getPackagePartProvider
),
languageVersionSettings = LanguageVersionSettingsImpl.DEFAULT,
PsiBasedProjectFileSearchScope(sourceScope),
PsiBasedProjectFileSearchScope(librariesScope),
lookupTracker = null,
enumWhenTracker = null,
incrementalCompilationContext = null,
extensionRegistrars = emptyList(),
needRegisterJavaElementFinder = true,
dependenciesConfigurator = {
friendDependencies(friendsPaths)
}
)
}