[FIR] Cleanup session creation utils
This commit is contained in:
+1
-1
@@ -38,7 +38,7 @@ abstract class AbstractFirLoadCompiledKotlin : AbstractFirLoadBinariesTest() {
|
||||
val environment = KotlinCoreEnvironment.createForTests(testRootDisposable, configuration, EnvironmentConfigFiles.JVM_CONFIG_FILES)
|
||||
|
||||
prepareProjectExtensions(environment.project)
|
||||
val sessionWithDependency = createSession(environment, GlobalSearchScope.EMPTY_SCOPE)
|
||||
val sessionWithDependency = createSessionForTests(environment, GlobalSearchScope.EMPTY_SCOPE)
|
||||
|
||||
val testDataDirectoryPath =
|
||||
"compiler/fir/analysis-tests/testData/loadCompiledKotlin/" +
|
||||
|
||||
+1
-1
@@ -18,7 +18,7 @@ class BuiltInsDeserializationForFirTestCase : AbstractFirLoadBinariesTest() {
|
||||
|
||||
fun testBuiltInPackagesContent() {
|
||||
val moduleDescriptor = BuiltinsTestUtils.compileBuiltinsModule(environment)
|
||||
val session = createSession(environment, GlobalSearchScope.allScope(project))
|
||||
val session = createSessionForTests(environment, GlobalSearchScope.allScope(project))
|
||||
for (packageFqName in BuiltinsTestUtils.BUILTIN_PACKAGE_NAMES) {
|
||||
val path = "compiler/fir/analysis-tests/testData/builtIns/" + packageFqName.asString().replace('.', '-') + ".txt"
|
||||
checkPackageContent(session, packageFqName, moduleDescriptor, path)
|
||||
|
||||
+2
-2
@@ -22,7 +22,7 @@ import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM
|
||||
import org.jetbrains.kotlin.codegen.forTestCompile.ForTestCompileRuntime
|
||||
import org.jetbrains.kotlin.fir.FirRenderer
|
||||
import org.jetbrains.kotlin.fir.createSession
|
||||
import org.jetbrains.kotlin.fir.createSessionForTests
|
||||
import org.jetbrains.kotlin.fir.java.declarations.FirJavaClass
|
||||
import org.jetbrains.kotlin.fir.resolve.symbolProvider
|
||||
import org.jetbrains.kotlin.fir.resolve.providers.impl.FirCompositeSymbolProvider
|
||||
@@ -131,7 +131,7 @@ abstract class AbstractFirTypeEnhancementTest : KtUsefulTestCase() {
|
||||
|
||||
val scope = GlobalSearchScope.filesScope(project, virtualFiles)
|
||||
.uniteWith(TopDownAnalyzerFacadeForJVM.AllJavaSourcesInProjectScope(project))
|
||||
val session = createSession(environment, scope)
|
||||
val session = createSessionForTests(environment, scope)
|
||||
|
||||
val topPsiClasses = psiFiles.flatMap { it.getChildrenOfType<PsiClass>().toList() }
|
||||
|
||||
|
||||
@@ -0,0 +1,89 @@
|
||||
/*
|
||||
* Copyright 2010-2021 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.psi.search.GlobalSearchScope
|
||||
import org.jetbrains.kotlin.analyzer.ModuleInfo
|
||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||
import org.jetbrains.kotlin.fir.java.FirProjectSessionProvider
|
||||
import org.jetbrains.kotlin.fir.session.FirJvmModuleInfo
|
||||
import org.jetbrains.kotlin.fir.session.FirSessionFactory
|
||||
import org.jetbrains.kotlin.load.kotlin.PackagePartProvider
|
||||
import org.jetbrains.kotlin.modules.Module
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
|
||||
fun createSessionWithDependencies(
|
||||
name: Name,
|
||||
friendPaths: List<String>,
|
||||
outputDirectory: String?,
|
||||
project: Project,
|
||||
languageVersionSettings: LanguageVersionSettings,
|
||||
sourceScope: GlobalSearchScope,
|
||||
librariesScope: GlobalSearchScope,
|
||||
packagePartProvider: (GlobalSearchScope) -> PackagePartProvider,
|
||||
sessionConfigurator: FirSessionFactory.FirSessionConfigurator.() -> Unit = {}
|
||||
): FirSession {
|
||||
return createSessionWithDependencies(
|
||||
name.identifier,
|
||||
project,
|
||||
languageVersionSettings,
|
||||
sourceScope,
|
||||
librariesScope,
|
||||
packagePartProvider,
|
||||
sessionConfigurator
|
||||
) {
|
||||
FirJvmModuleInfo(name, it, friendPaths, outputDirectory)
|
||||
}
|
||||
}
|
||||
|
||||
fun createSessionWithDependencies(
|
||||
module: Module,
|
||||
project: Project,
|
||||
languageVersionSettings: LanguageVersionSettings,
|
||||
sourceScope: GlobalSearchScope,
|
||||
librariesScope: GlobalSearchScope,
|
||||
packagePartProvider: (GlobalSearchScope) -> PackagePartProvider,
|
||||
sessionConfigurator: FirSessionFactory.FirSessionConfigurator.() -> Unit = {}
|
||||
): FirSession {
|
||||
return createSessionWithDependencies(
|
||||
module.getModuleName(),
|
||||
project,
|
||||
languageVersionSettings,
|
||||
sourceScope,
|
||||
librariesScope,
|
||||
packagePartProvider,
|
||||
sessionConfigurator
|
||||
) {
|
||||
FirJvmModuleInfo(module, it)
|
||||
}
|
||||
}
|
||||
|
||||
private inline fun createSessionWithDependencies(
|
||||
moduleName: String,
|
||||
project: Project,
|
||||
languageVersionSettings: LanguageVersionSettings,
|
||||
sourceScope: GlobalSearchScope,
|
||||
librariesScope: GlobalSearchScope,
|
||||
packagePartProvider: (GlobalSearchScope) -> PackagePartProvider,
|
||||
noinline sessionConfigurator: FirSessionFactory.FirSessionConfigurator.() -> Unit,
|
||||
moduleInfoProvider: (dependencies: List<ModuleInfo>) -> ModuleInfo,
|
||||
): FirSession {
|
||||
val provider = FirProjectSessionProvider()
|
||||
val librariesModuleInfo = FirJvmModuleInfo.createForLibraries(moduleName)
|
||||
FirSessionFactory.createLibrarySession(
|
||||
librariesModuleInfo, provider, librariesScope,
|
||||
project, packagePartProvider(librariesScope)
|
||||
)
|
||||
return FirSessionFactory.createJavaModuleBasedSession(
|
||||
moduleInfoProvider(listOf(librariesModuleInfo)),
|
||||
provider,
|
||||
sourceScope,
|
||||
project,
|
||||
languageVersionSettings = languageVersionSettings,
|
||||
init = sessionConfigurator
|
||||
)
|
||||
}
|
||||
+1
-1
@@ -156,7 +156,7 @@ class FirResolveModularizedTotalKotlinTest : AbstractModularizedTest() {
|
||||
val scope = GlobalSearchScope.filesScope(project, ktFiles.map { it.virtualFile })
|
||||
.uniteWith(TopDownAnalyzerFacadeForJVM.AllJavaSourcesInProjectScope(project))
|
||||
val librariesScope = ProjectScope.getLibrariesScope(project)
|
||||
val session = createSession(environment, scope, librariesScope, moduleData.qualifiedName)
|
||||
val session = createSessionForTests(environment, scope, librariesScope, moduleData.qualifiedName)
|
||||
val scopeSession = ScopeSession()
|
||||
val processors = createAllCompilerResolveProcessors(session, scopeSession).let {
|
||||
if (RUN_CHECKERS) {
|
||||
|
||||
Reference in New Issue
Block a user