[FIR] Fix all usages of declarationSiteSession

This commit is contained in:
Dmitriy Novozhilov
2021-04-29 17:44:07 +03:00
committed by TeamCityServer
parent a15316de24
commit 5cfa8694d4
177 changed files with 775 additions and 625 deletions
@@ -93,3 +93,8 @@ fun FirSession.registerJavaSpecificResolveComponents() {
register(FirSyntheticNamesProvider::class, FirJavaSyntheticNamesProvider)
register(FirJsr305StateContainer::class, FirJsr305StateContainer.Default)
}
@OptIn(SessionConfiguration::class)
fun FirSession.registerModuleData(moduleData: FirModuleData) {
register(FirModuleData::class, moduleData)
}
@@ -0,0 +1,42 @@
/*
* 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.session
import org.jetbrains.kotlin.analyzer.ModuleInfo
import org.jetbrains.kotlin.fir.FirModuleData
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.platform.TargetPlatform
class FirModuleInfoBasedModuleData(
val moduleInfo: ModuleInfo,
override val session: FirSession
) : FirModuleData() {
override val name: Name
get() = moduleInfo.name
override val dependencies: List<FirModuleData> = moduleInfo.dependencies()
.filterNot { it == moduleInfo }
.map { FirModuleInfoBasedModuleData(it, session) }
override val dependsOnDependencies: List<FirModuleData> = moduleInfo.expectedBy
.filterNot { it == moduleInfo }
.map { FirModuleInfoBasedModuleData(it, session) }
override val friendDependencies: List<FirModuleData> = moduleInfo.modulesWhoseInternalsAreVisible()
.filterNot { it == moduleInfo }
.map { FirModuleInfoBasedModuleData(it, session) }
override val platform: TargetPlatform
get() = moduleInfo.platform
override fun equals(other: Any?): Boolean {
if (other !is FirModuleInfoBasedModuleData) return false
return moduleInfo == other.moduleInfo
}
override fun hashCode(): Int {
return moduleInfo.hashCode()
}
}
@@ -12,6 +12,7 @@ import org.jetbrains.annotations.TestOnly
import org.jetbrains.kotlin.analyzer.ModuleInfo
import org.jetbrains.kotlin.config.LanguageVersionSettings
import org.jetbrains.kotlin.config.LanguageVersionSettingsImpl
import org.jetbrains.kotlin.fir.FirModuleData
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.PrivateSessionConstructor
import org.jetbrains.kotlin.fir.SessionConfiguration
@@ -78,6 +79,8 @@ object FirSessionFactory {
init: FirSessionConfigurator.() -> Unit = {}
): FirJavaModuleBasedSession {
return FirJavaModuleBasedSession(moduleInfo, sessionProvider).apply {
val moduleData = FirModuleInfoBasedModuleData(moduleInfo, this)
registerModuleData(moduleData)
registerCliCompilerOnlyComponents()
registerCommonComponents(languageVersionSettings)
registerResolveComponents(lookupTracker)
@@ -91,10 +94,15 @@ object FirSessionFactory {
val deserializedJvmSymbolsProvider =
if (additionalPackagePartProvider == null) null
else {
val javaSymbolProvider = JavaSymbolProvider(this, project, additionalScope ?: scope)
val javaSymbolProvider = JavaSymbolProvider(this, moduleData, project, additionalScope ?: scope)
makeDeserializedJvmSymbolsProvider(
project, additionalScope ?: scope, additionalPackagePartProvider, javaSymbolProvider, kotlinScopeProvider
moduleData,
project,
additionalScope ?: scope,
additionalPackagePartProvider,
javaSymbolProvider,
kotlinScopeProvider
)
}
@@ -104,7 +112,7 @@ object FirSessionFactory {
this,
listOfNotNull(
firProvider.symbolProvider,
JavaSymbolProvider(this, project, scope),
JavaSymbolProvider(this, moduleData, project, scope),
dependenciesProvider ?: FirDependenciesSymbolProviderImpl(this),
deserializedJvmSymbolsProvider
)
@@ -130,23 +138,24 @@ object FirSessionFactory {
languageVersionSettings: LanguageVersionSettings = LanguageVersionSettingsImpl.DEFAULT,
): FirLibrarySession {
return FirLibrarySession(moduleInfo, sessionProvider).apply {
val moduleData = FirModuleInfoBasedModuleData(moduleInfo, this)
registerCliCompilerOnlyComponents()
registerCommonComponents(languageVersionSettings)
val javaSymbolProvider = JavaSymbolProvider(this, project, scope)
val javaSymbolProvider = JavaSymbolProvider(this, moduleData, project, scope)
val kotlinScopeProvider = FirKotlinScopeProvider(::wrapScopeWithJvmMapped)
val deserializedJvmSymbolsProvider = makeDeserializedJvmSymbolsProvider(
project, scope, packagePartProvider, javaSymbolProvider, kotlinScopeProvider
moduleData, project, scope, packagePartProvider, javaSymbolProvider, kotlinScopeProvider
)
val symbolProvider = FirCompositeSymbolProvider(
this,
listOf(
deserializedJvmSymbolsProvider,
FirBuiltinSymbolProvider(this, kotlinScopeProvider),
FirCloneableSymbolProvider(this, kotlinScopeProvider),
FirBuiltinSymbolProvider(this, moduleData, kotlinScopeProvider),
FirCloneableSymbolProvider(this, moduleData, kotlinScopeProvider),
javaSymbolProvider,
FirDependenciesSymbolProviderImpl(this)
)
@@ -156,7 +165,8 @@ object FirSessionFactory {
}
}
private fun FirSession.makeDeserializedJvmSymbolsProvider(
private fun makeDeserializedJvmSymbolsProvider(
moduleData: FirModuleData,
project: Project,
scope: GlobalSearchScope,
packagePartProvider: PackagePartProvider,
@@ -171,7 +181,7 @@ object FirSessionFactory {
}
return KotlinDeserializedJvmSymbolsProvider(
this, kotlinScopeProvider, packagePartProvider, kotlinClassFinder, javaSymbolProvider, javaClassFinder
moduleData, kotlinScopeProvider, packagePartProvider, kotlinClassFinder, javaSymbolProvider, javaClassFinder
)
}