[FIR] Fix all usages of declarationSiteSession
This commit is contained in:
committed by
TeamCityServer
parent
a15316de24
commit
5cfa8694d4
@@ -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)
|
||||
}
|
||||
|
||||
+42
@@ -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
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user