[FIR] Store mapped jvm declarations in session component, share it between MPP modules
^KT-61640 Fixed This change doesn't affect any tests in the moment, because it's part of bigger refactoring of proper storing IR declarations during FIR2IR conversion (KT-61637) Without this change, there is one test break in branch for KT-61637: - FirPsiBlackBoxCodegenTestGenerated.Multiplatform.K2.testJavaMethodWithTypeParameter
This commit is contained in:
committed by
Space Team
parent
bb36beb364
commit
fa4c6d55c1
+14
-2
@@ -49,6 +49,7 @@ import org.jetbrains.kotlin.fir.scopes.FirOverrideService
|
||||
import org.jetbrains.kotlin.fir.scopes.FirPlatformClassMapper
|
||||
import org.jetbrains.kotlin.fir.scopes.PlatformSpecificOverridabilityRules
|
||||
import org.jetbrains.kotlin.fir.scopes.impl.*
|
||||
import org.jetbrains.kotlin.fir.scopes.jvm.JvmMappedScope.FirMappedSymbolStorage
|
||||
import org.jetbrains.kotlin.fir.serialization.FirProvidedDeclarationsForMetadataService
|
||||
import org.jetbrains.kotlin.fir.symbols.FirLazyDeclarationResolver
|
||||
import org.jetbrains.kotlin.fir.types.*
|
||||
@@ -104,14 +105,25 @@ fun FirSession.registerCliCompilerOnlyComponents() {
|
||||
register(FirPredicateBasedProvider::class, FirPredicateBasedProviderImpl(this))
|
||||
}
|
||||
|
||||
class FirSharableJavaComponents(
|
||||
val enhancementStorage: FirEnhancedSymbolsStorage,
|
||||
val mappedStorage: FirMappedSymbolStorage
|
||||
) {
|
||||
constructor(cachesFactory: FirCachesFactory) : this(
|
||||
FirEnhancedSymbolsStorage(cachesFactory),
|
||||
FirMappedSymbolStorage(cachesFactory)
|
||||
)
|
||||
}
|
||||
|
||||
@OptIn(SessionConfiguration::class)
|
||||
fun FirSession.registerCommonJavaComponents(
|
||||
javaModuleResolver: JavaModuleResolver,
|
||||
predefinedEnhancementStorage: FirEnhancedSymbolsStorage? = null,
|
||||
predefinedComponents: FirSharableJavaComponents? = null,
|
||||
) {
|
||||
val jsr305State = languageVersionSettings.getFlag(JvmAnalysisFlags.javaTypeEnhancementState)
|
||||
register(FirAnnotationTypeQualifierResolver::class, FirAnnotationTypeQualifierResolver(this, jsr305State, javaModuleResolver))
|
||||
register(FirEnhancedSymbolsStorage::class, predefinedEnhancementStorage ?: FirEnhancedSymbolsStorage(this))
|
||||
register(FirEnhancedSymbolsStorage::class, predefinedComponents?.enhancementStorage ?: FirEnhancedSymbolsStorage(this))
|
||||
register(FirMappedSymbolStorage::class, predefinedComponents?.mappedStorage ?: FirMappedSymbolStorage(this))
|
||||
register(FirSyntheticPropertiesStorage::class, FirSyntheticPropertiesStorage(this))
|
||||
register(
|
||||
FirJvmDefaultModeComponent::class,
|
||||
|
||||
+4
-5
@@ -19,7 +19,6 @@ import org.jetbrains.kotlin.fir.java.FirProjectSessionProvider
|
||||
import org.jetbrains.kotlin.fir.java.JavaSymbolProvider
|
||||
import org.jetbrains.kotlin.fir.java.deserialization.JvmClassFileBasedSymbolProvider
|
||||
import org.jetbrains.kotlin.fir.java.deserialization.OptionalAnnotationClassesProvider
|
||||
import org.jetbrains.kotlin.fir.java.enhancement.FirEnhancedSymbolsStorage
|
||||
import org.jetbrains.kotlin.fir.resolve.providers.impl.FirBuiltinSymbolProvider
|
||||
import org.jetbrains.kotlin.fir.resolve.providers.impl.FirCloneableSymbolProvider
|
||||
import org.jetbrains.kotlin.fir.resolve.scopes.wrapScopeWithJvmMapped
|
||||
@@ -42,7 +41,7 @@ object FirJvmSessionFactory : FirAbstractSessionFactory() {
|
||||
scope: AbstractProjectFileSearchScope,
|
||||
packagePartProvider: PackagePartProvider,
|
||||
languageVersionSettings: LanguageVersionSettings,
|
||||
predefinedEnhancementStorage: FirEnhancedSymbolsStorage? = null,
|
||||
predefinedJavaComponents: FirSharableJavaComponents? = null,
|
||||
registerExtraComponents: ((FirSession) -> Unit),
|
||||
): FirSession {
|
||||
return createLibrarySession(
|
||||
@@ -52,7 +51,7 @@ object FirJvmSessionFactory : FirAbstractSessionFactory() {
|
||||
languageVersionSettings,
|
||||
extensionRegistrars,
|
||||
registerExtraComponents = {
|
||||
it.registerCommonJavaComponents(projectEnvironment.getJavaModuleResolver(), predefinedEnhancementStorage)
|
||||
it.registerCommonJavaComponents(projectEnvironment.getJavaModuleResolver(), predefinedJavaComponents)
|
||||
registerExtraComponents(it)
|
||||
},
|
||||
createKotlinScopeProvider = { FirKotlinScopeProvider(::wrapScopeWithJvmMapped) },
|
||||
@@ -92,7 +91,7 @@ object FirJvmSessionFactory : FirAbstractSessionFactory() {
|
||||
lookupTracker: LookupTracker? = null,
|
||||
enumWhenTracker: EnumWhenTracker? = null,
|
||||
importTracker: ImportTracker? = null,
|
||||
predefinedEnhancementStorage: FirEnhancedSymbolsStorage? = null,
|
||||
predefinedJavaComponents: FirSharableJavaComponents? = null,
|
||||
needRegisterJavaElementFinder: Boolean,
|
||||
registerExtraComponents: ((FirSession) -> Unit) = {},
|
||||
init: FirSessionConfigurator.() -> Unit = {}
|
||||
@@ -107,7 +106,7 @@ object FirJvmSessionFactory : FirAbstractSessionFactory() {
|
||||
importTracker,
|
||||
init,
|
||||
registerExtraComponents = {
|
||||
it.registerCommonJavaComponents(projectEnvironment.getJavaModuleResolver(), predefinedEnhancementStorage)
|
||||
it.registerCommonJavaComponents(projectEnvironment.getJavaModuleResolver(), predefinedJavaComponents)
|
||||
it.registerJavaSpecificResolveComponents()
|
||||
registerExtraComponents(it)
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user