From a4ad8d59b60ef87e55afabdb96e4c4c4abed3a0f Mon Sep 17 00:00:00 2001 From: Ivan Kochurkin Date: Wed, 5 Oct 2022 22:20:16 +0200 Subject: [PATCH] [FIR] Move createSessionForTests, createSessionForTests into FirTestSessionFactoryHelper --- .../benchmarks/AbstractSimpleFileBenchmark.kt | 4 +- .../fir/AbstractFirLoadCompiledKotlin.kt | 2 +- .../BuiltInsDeserializationForFirTestCase.kt | 2 +- .../java/AbstractFirTypeEnhancementTest.kt | 4 +- .../FirResolveModularizedTotalKotlinTest.kt | 2 +- .../kotlin/codegen/GenerationUtils.kt | 10 ++- .../kotlin/fir/FirTestSessionFactoryHelper.kt | 86 +++++++++++++++++++ .../jetbrains/kotlin/fir/SessionTestUtils.kt | 85 ------------------ 8 files changed, 101 insertions(+), 94 deletions(-) create mode 100644 compiler/tests-compiler-utils/tests/org/jetbrains/kotlin/fir/FirTestSessionFactoryHelper.kt delete mode 100644 compiler/tests-compiler-utils/tests/org/jetbrains/kotlin/fir/SessionTestUtils.kt diff --git a/benchmarks/src/org/jetbrains/kotlin/benchmarks/AbstractSimpleFileBenchmark.kt b/benchmarks/src/org/jetbrains/kotlin/benchmarks/AbstractSimpleFileBenchmark.kt index 1d61628dc03..f74ebb5343f 100644 --- a/benchmarks/src/org/jetbrains/kotlin/benchmarks/AbstractSimpleFileBenchmark.kt +++ b/benchmarks/src/org/jetbrains/kotlin/benchmarks/AbstractSimpleFileBenchmark.kt @@ -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) diff --git a/compiler/fir/analysis-tests/legacy-fir-tests/tests/org/jetbrains/kotlin/fir/AbstractFirLoadCompiledKotlin.kt b/compiler/fir/analysis-tests/legacy-fir-tests/tests/org/jetbrains/kotlin/fir/AbstractFirLoadCompiledKotlin.kt index 2945226ec84..73a0823dd64 100644 --- a/compiler/fir/analysis-tests/legacy-fir-tests/tests/org/jetbrains/kotlin/fir/AbstractFirLoadCompiledKotlin.kt +++ b/compiler/fir/analysis-tests/legacy-fir-tests/tests/org/jetbrains/kotlin/fir/AbstractFirLoadCompiledKotlin.kt @@ -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/" + diff --git a/compiler/fir/analysis-tests/legacy-fir-tests/tests/org/jetbrains/kotlin/fir/BuiltInsDeserializationForFirTestCase.kt b/compiler/fir/analysis-tests/legacy-fir-tests/tests/org/jetbrains/kotlin/fir/BuiltInsDeserializationForFirTestCase.kt index 02b4d9ec5a2..75d3de2a33c 100644 --- a/compiler/fir/analysis-tests/legacy-fir-tests/tests/org/jetbrains/kotlin/fir/BuiltInsDeserializationForFirTestCase.kt +++ b/compiler/fir/analysis-tests/legacy-fir-tests/tests/org/jetbrains/kotlin/fir/BuiltInsDeserializationForFirTestCase.kt @@ -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() ) diff --git a/compiler/fir/analysis-tests/legacy-fir-tests/tests/org/jetbrains/kotlin/fir/java/AbstractFirTypeEnhancementTest.kt b/compiler/fir/analysis-tests/legacy-fir-tests/tests/org/jetbrains/kotlin/fir/java/AbstractFirTypeEnhancementTest.kt index dddb7fc8ace..6da4f715484 100644 --- a/compiler/fir/analysis-tests/legacy-fir-tests/tests/org/jetbrains/kotlin/fir/java/AbstractFirTypeEnhancementTest.kt +++ b/compiler/fir/analysis-tests/legacy-fir-tests/tests/org/jetbrains/kotlin/fir/java/AbstractFirTypeEnhancementTest.kt @@ -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() ) diff --git a/compiler/fir/modularized-tests/tests/org/jetbrains/kotlin/fir/FirResolveModularizedTotalKotlinTest.kt b/compiler/fir/modularized-tests/tests/org/jetbrains/kotlin/fir/FirResolveModularizedTotalKotlinTest.kt index c9775ef74f2..6a6e4872722 100644 --- a/compiler/fir/modularized-tests/tests/org/jetbrains/kotlin/fir/FirResolveModularizedTotalKotlinTest.kt +++ b/compiler/fir/modularized-tests/tests/org/jetbrains/kotlin/fir/FirResolveModularizedTotalKotlinTest.kt @@ -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(), diff --git a/compiler/tests-compiler-utils/tests/org/jetbrains/kotlin/codegen/GenerationUtils.kt b/compiler/tests-compiler-utils/tests/org/jetbrains/kotlin/codegen/GenerationUtils.kt index 0e314e64881..29be4cf1766 100644 --- a/compiler/tests-compiler-utils/tests/org/jetbrains/kotlin/codegen/GenerationUtils.kt +++ b/compiler/tests-compiler-utils/tests/org/jetbrains/kotlin/codegen/GenerationUtils.kt @@ -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( diff --git a/compiler/tests-compiler-utils/tests/org/jetbrains/kotlin/fir/FirTestSessionFactoryHelper.kt b/compiler/tests-compiler-utils/tests/org/jetbrains/kotlin/fir/FirTestSessionFactoryHelper.kt new file mode 100644 index 00000000000..1f836f383d3 --- /dev/null +++ b/compiler/tests-compiler-utils/tests/org/jetbrains/kotlin/fir/FirTestSessionFactoryHelper.kt @@ -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 = 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 = 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) + } + ) + } +} \ No newline at end of file diff --git a/compiler/tests-compiler-utils/tests/org/jetbrains/kotlin/fir/SessionTestUtils.kt b/compiler/tests-compiler-utils/tests/org/jetbrains/kotlin/fir/SessionTestUtils.kt deleted file mode 100644 index f3161448610..00000000000 --- a/compiler/tests-compiler-utils/tests/org/jetbrains/kotlin/fir/SessionTestUtils.kt +++ /dev/null @@ -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 = 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 = 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) - } - ) -} -