Add PackageAndMetadataPartProvider interface
Use it for parameter in MetadataSymbolProvider
This commit is contained in:
committed by
Space Team
parent
f3e3cc0037
commit
a9bac2f18b
@@ -37,6 +37,7 @@ import org.jetbrains.kotlin.fir.session.IncrementalCompilationContext
|
|||||||
import org.jetbrains.kotlin.fir.session.environment.AbstractProjectEnvironment
|
import org.jetbrains.kotlin.fir.session.environment.AbstractProjectEnvironment
|
||||||
import org.jetbrains.kotlin.fir.session.environment.AbstractProjectFileSearchScope
|
import org.jetbrains.kotlin.fir.session.environment.AbstractProjectFileSearchScope
|
||||||
import org.jetbrains.kotlin.javac.JavacWrapper
|
import org.jetbrains.kotlin.javac.JavacWrapper
|
||||||
|
import org.jetbrains.kotlin.load.kotlin.PackageAndMetadataPartProvider
|
||||||
import org.jetbrains.kotlin.load.kotlin.incremental.IncrementalPackagePartProvider
|
import org.jetbrains.kotlin.load.kotlin.incremental.IncrementalPackagePartProvider
|
||||||
import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCompilationComponents
|
import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCompilationComponents
|
||||||
import org.jetbrains.kotlin.modules.JavaRootPath
|
import org.jetbrains.kotlin.modules.JavaRootPath
|
||||||
@@ -264,7 +265,7 @@ fun createFirLibraryListAndSession(
|
|||||||
libraryList.moduleDataProvider,
|
libraryList.moduleDataProvider,
|
||||||
projectEnvironment,
|
projectEnvironment,
|
||||||
scope,
|
scope,
|
||||||
projectEnvironment.getPackagePartProvider(librariesScope),
|
projectEnvironment.getPackagePartProvider(librariesScope) as PackageAndMetadataPartProvider,
|
||||||
configuration.languageVersionSettings,
|
configuration.languageVersionSettings,
|
||||||
registerExtraComponents = {},
|
registerExtraComponents = {},
|
||||||
)
|
)
|
||||||
|
|||||||
+5
-5
@@ -28,7 +28,7 @@ import org.jetbrains.kotlin.fir.session.environment.AbstractProjectEnvironment
|
|||||||
import org.jetbrains.kotlin.fir.session.environment.AbstractProjectFileSearchScope
|
import org.jetbrains.kotlin.fir.session.environment.AbstractProjectFileSearchScope
|
||||||
import org.jetbrains.kotlin.incremental.components.EnumWhenTracker
|
import org.jetbrains.kotlin.incremental.components.EnumWhenTracker
|
||||||
import org.jetbrains.kotlin.incremental.components.LookupTracker
|
import org.jetbrains.kotlin.incremental.components.LookupTracker
|
||||||
import org.jetbrains.kotlin.load.kotlin.PackagePartProvider
|
import org.jetbrains.kotlin.load.kotlin.PackageAndMetadataPartProvider
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.serialization.deserialization.KotlinMetadataFinder
|
import org.jetbrains.kotlin.serialization.deserialization.KotlinMetadataFinder
|
||||||
|
|
||||||
@@ -39,7 +39,7 @@ object FirCommonSessionFactory : FirAbstractSessionFactory() {
|
|||||||
moduleDataProvider: ModuleDataProvider,
|
moduleDataProvider: ModuleDataProvider,
|
||||||
projectEnvironment: AbstractProjectEnvironment,
|
projectEnvironment: AbstractProjectEnvironment,
|
||||||
scope: AbstractProjectFileSearchScope,
|
scope: AbstractProjectFileSearchScope,
|
||||||
packagePartProvider: PackagePartProvider,
|
packageAndMetadataPartProvider: PackageAndMetadataPartProvider,
|
||||||
languageVersionSettings: LanguageVersionSettings,
|
languageVersionSettings: LanguageVersionSettings,
|
||||||
registerExtraComponents: ((FirSession) -> Unit),
|
registerExtraComponents: ((FirSession) -> Unit),
|
||||||
): FirSession {
|
): FirSession {
|
||||||
@@ -59,12 +59,12 @@ object FirCommonSessionFactory : FirAbstractSessionFactory() {
|
|||||||
session,
|
session,
|
||||||
moduleDataProvider,
|
moduleDataProvider,
|
||||||
kotlinScopeProvider,
|
kotlinScopeProvider,
|
||||||
packagePartProvider,
|
packageAndMetadataPartProvider,
|
||||||
projectEnvironment.getKotlinClassFinder(scope)
|
projectEnvironment.getKotlinClassFinder(scope)
|
||||||
),
|
),
|
||||||
FirBuiltinSymbolProvider(session, builtinsModuleData, kotlinScopeProvider),
|
FirBuiltinSymbolProvider(session, builtinsModuleData, kotlinScopeProvider),
|
||||||
FirCloneableSymbolProvider(session, builtinsModuleData, kotlinScopeProvider),
|
FirCloneableSymbolProvider(session, builtinsModuleData, kotlinScopeProvider),
|
||||||
OptionalAnnotationClassesProvider(session, moduleDataProvider, kotlinScopeProvider, packagePartProvider)
|
OptionalAnnotationClassesProvider(session, moduleDataProvider, kotlinScopeProvider, packageAndMetadataPartProvider)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
@@ -116,7 +116,7 @@ object FirCommonSessionFactory : FirAbstractSessionFactory() {
|
|||||||
session,
|
session,
|
||||||
moduleDataProvider,
|
moduleDataProvider,
|
||||||
kotlinScopeProvider,
|
kotlinScopeProvider,
|
||||||
precompiledBinariesPackagePartProvider,
|
precompiledBinariesPackagePartProvider as PackageAndMetadataPartProvider,
|
||||||
projectEnvironment.getKotlinClassFinder(it.precompiledBinariesFileScope) as KotlinMetadataFinder,
|
projectEnvironment.getKotlinClassFinder(it.precompiledBinariesFileScope) as KotlinMetadataFinder,
|
||||||
defaultDeserializationOrigin = FirDeclarationOrigin.Precompiled
|
defaultDeserializationOrigin = FirDeclarationOrigin.Precompiled
|
||||||
)
|
)
|
||||||
|
|||||||
+4
-7
@@ -10,14 +10,13 @@ import org.jetbrains.kotlin.fir.ThreadSafeMutableState
|
|||||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
|
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
|
||||||
import org.jetbrains.kotlin.fir.deserialization.*
|
import org.jetbrains.kotlin.fir.deserialization.*
|
||||||
import org.jetbrains.kotlin.fir.scopes.FirKotlinScopeProvider
|
import org.jetbrains.kotlin.fir.scopes.FirKotlinScopeProvider
|
||||||
import org.jetbrains.kotlin.load.kotlin.PackagePartProvider
|
import org.jetbrains.kotlin.load.kotlin.PackageAndMetadataPartProvider
|
||||||
import org.jetbrains.kotlin.metadata.ProtoBuf
|
import org.jetbrains.kotlin.metadata.ProtoBuf
|
||||||
import org.jetbrains.kotlin.name.ClassId
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.serialization.deserialization.KotlinMetadataFinder
|
import org.jetbrains.kotlin.serialization.deserialization.KotlinMetadataFinder
|
||||||
import org.jetbrains.kotlin.serialization.deserialization.MetadataClassDataFinder
|
import org.jetbrains.kotlin.serialization.deserialization.MetadataClassDataFinder
|
||||||
import org.jetbrains.kotlin.serialization.deserialization.MetadataPartProvider
|
|
||||||
import org.jetbrains.kotlin.serialization.deserialization.builtins.BuiltInSerializerProtocol
|
import org.jetbrains.kotlin.serialization.deserialization.builtins.BuiltInSerializerProtocol
|
||||||
import org.jetbrains.kotlin.serialization.deserialization.readProto
|
import org.jetbrains.kotlin.serialization.deserialization.readProto
|
||||||
|
|
||||||
@@ -26,14 +25,12 @@ class MetadataSymbolProvider(
|
|||||||
session: FirSession,
|
session: FirSession,
|
||||||
moduleDataProvider: ModuleDataProvider,
|
moduleDataProvider: ModuleDataProvider,
|
||||||
kotlinScopeProvider: FirKotlinScopeProvider,
|
kotlinScopeProvider: FirKotlinScopeProvider,
|
||||||
private val packagePartProvider: PackagePartProvider,
|
private val packageAndMetadataPartProvider: PackageAndMetadataPartProvider,
|
||||||
private val kotlinClassFinder: KotlinMetadataFinder,
|
private val kotlinClassFinder: KotlinMetadataFinder,
|
||||||
defaultDeserializationOrigin: FirDeclarationOrigin = FirDeclarationOrigin.Library
|
defaultDeserializationOrigin: FirDeclarationOrigin = FirDeclarationOrigin.Library
|
||||||
) : AbstractFirDeserializedSymbolProvider(
|
) : AbstractFirDeserializedSymbolProvider(
|
||||||
session, moduleDataProvider, kotlinScopeProvider, defaultDeserializationOrigin, BuiltInSerializerProtocol
|
session, moduleDataProvider, kotlinScopeProvider, defaultDeserializationOrigin, BuiltInSerializerProtocol
|
||||||
) {
|
) {
|
||||||
private val metadataPartProvider = packagePartProvider as MetadataPartProvider
|
|
||||||
|
|
||||||
private val classDataFinder = MetadataClassDataFinder(kotlinClassFinder)
|
private val classDataFinder = MetadataClassDataFinder(kotlinClassFinder)
|
||||||
|
|
||||||
private val annotationDeserializer = FirBuiltinAnnotationDeserializer(session)
|
private val annotationDeserializer = FirBuiltinAnnotationDeserializer(session)
|
||||||
@@ -41,7 +38,7 @@ class MetadataSymbolProvider(
|
|||||||
private val constDeserializer = FirConstDeserializer(session, BuiltInSerializerProtocol)
|
private val constDeserializer = FirConstDeserializer(session, BuiltInSerializerProtocol)
|
||||||
|
|
||||||
override fun computePackagePartsInfos(packageFqName: FqName): List<PackagePartsCacheData> {
|
override fun computePackagePartsInfos(packageFqName: FqName): List<PackagePartsCacheData> {
|
||||||
return metadataPartProvider.findMetadataPackageParts(packageFqName.asString()).mapNotNull { partName ->
|
return packageAndMetadataPartProvider.findMetadataPackageParts(packageFqName.asString()).mapNotNull { partName ->
|
||||||
if (partName in KotlinBuiltins) return@mapNotNull null
|
if (partName in KotlinBuiltins) return@mapNotNull null
|
||||||
val classId = ClassId(packageFqName, Name.identifier(partName))
|
val classId = ClassId(packageFqName, Name.identifier(partName))
|
||||||
|
|
||||||
@@ -62,7 +59,7 @@ class MetadataSymbolProvider(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun computePackageSetWithNonClassDeclarations() = packagePartProvider.computePackageSetWithNonClassDeclarations()
|
override fun computePackageSetWithNonClassDeclarations() = packageAndMetadataPartProvider.computePackageSetWithNonClassDeclarations()
|
||||||
|
|
||||||
override fun knownTopLevelClassesInPackage(packageFqName: FqName) = kotlinClassFinder.findMetadataTopLevelClassesInPackage(packageFqName)
|
override fun knownTopLevelClassesInPackage(packageFqName: FqName) = kotlinClassFinder.findMetadataTopLevelClassesInPackage(packageFqName)
|
||||||
|
|
||||||
|
|||||||
+1
-2
@@ -11,9 +11,8 @@ import org.jetbrains.kotlin.metadata.jvm.deserialization.PackageParts
|
|||||||
import org.jetbrains.kotlin.name.ClassId
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
import org.jetbrains.kotlin.serialization.deserialization.ClassData
|
import org.jetbrains.kotlin.serialization.deserialization.ClassData
|
||||||
import org.jetbrains.kotlin.serialization.deserialization.DeserializationConfiguration
|
import org.jetbrains.kotlin.serialization.deserialization.DeserializationConfiguration
|
||||||
import org.jetbrains.kotlin.serialization.deserialization.MetadataPartProvider
|
|
||||||
|
|
||||||
abstract class JvmPackagePartProviderBase<MappingsKey> : PackagePartProvider, MetadataPartProvider {
|
abstract class JvmPackagePartProviderBase<MappingsKey> : PackageAndMetadataPartProvider {
|
||||||
|
|
||||||
protected data class ModuleMappingInfo<MappingsKey>(val key: MappingsKey, val mapping: ModuleMapping, val name: String)
|
protected data class ModuleMappingInfo<MappingsKey>(val key: MappingsKey, val mapping: ModuleMapping, val name: String)
|
||||||
|
|
||||||
|
|||||||
+10
@@ -0,0 +1,10 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2023 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.load.kotlin
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.serialization.deserialization.MetadataPartProvider
|
||||||
|
|
||||||
|
interface PackageAndMetadataPartProvider : PackagePartProvider, MetadataPartProvider
|
||||||
Reference in New Issue
Block a user