diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/cliCompilerUtils.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/cliCompilerUtils.kt index acad6dfd540..34a59acc296 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/cliCompilerUtils.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/cliCompilerUtils.kt @@ -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.AbstractProjectFileSearchScope 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.components.IncrementalCompilationComponents import org.jetbrains.kotlin.modules.JavaRootPath @@ -264,7 +265,7 @@ fun createFirLibraryListAndSession( libraryList.moduleDataProvider, projectEnvironment, scope, - projectEnvironment.getPackagePartProvider(librariesScope), + projectEnvironment.getPackagePartProvider(librariesScope) as PackageAndMetadataPartProvider, configuration.languageVersionSettings, registerExtraComponents = {}, ) diff --git a/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/FirCommonSessionFactory.kt b/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/FirCommonSessionFactory.kt index 4ff196c9fd4..ffad8824828 100644 --- a/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/FirCommonSessionFactory.kt +++ b/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/FirCommonSessionFactory.kt @@ -28,7 +28,7 @@ import org.jetbrains.kotlin.fir.session.environment.AbstractProjectEnvironment import org.jetbrains.kotlin.fir.session.environment.AbstractProjectFileSearchScope import org.jetbrains.kotlin.incremental.components.EnumWhenTracker 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.serialization.deserialization.KotlinMetadataFinder @@ -39,7 +39,7 @@ object FirCommonSessionFactory : FirAbstractSessionFactory() { moduleDataProvider: ModuleDataProvider, projectEnvironment: AbstractProjectEnvironment, scope: AbstractProjectFileSearchScope, - packagePartProvider: PackagePartProvider, + packageAndMetadataPartProvider: PackageAndMetadataPartProvider, languageVersionSettings: LanguageVersionSettings, registerExtraComponents: ((FirSession) -> Unit), ): FirSession { @@ -59,12 +59,12 @@ object FirCommonSessionFactory : FirAbstractSessionFactory() { session, moduleDataProvider, kotlinScopeProvider, - packagePartProvider, + packageAndMetadataPartProvider, projectEnvironment.getKotlinClassFinder(scope) ), FirBuiltinSymbolProvider(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, moduleDataProvider, kotlinScopeProvider, - precompiledBinariesPackagePartProvider, + precompiledBinariesPackagePartProvider as PackageAndMetadataPartProvider, projectEnvironment.getKotlinClassFinder(it.precompiledBinariesFileScope) as KotlinMetadataFinder, defaultDeserializationOrigin = FirDeclarationOrigin.Precompiled ) diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/deserialization/MetadataSymbolProvider.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/deserialization/MetadataSymbolProvider.kt index ef6e119ee6c..5219379b9c1 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/deserialization/MetadataSymbolProvider.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/deserialization/MetadataSymbolProvider.kt @@ -10,14 +10,13 @@ import org.jetbrains.kotlin.fir.ThreadSafeMutableState import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin import org.jetbrains.kotlin.fir.deserialization.* 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.name.ClassId import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.serialization.deserialization.KotlinMetadataFinder 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.readProto @@ -26,14 +25,12 @@ class MetadataSymbolProvider( session: FirSession, moduleDataProvider: ModuleDataProvider, kotlinScopeProvider: FirKotlinScopeProvider, - private val packagePartProvider: PackagePartProvider, + private val packageAndMetadataPartProvider: PackageAndMetadataPartProvider, private val kotlinClassFinder: KotlinMetadataFinder, defaultDeserializationOrigin: FirDeclarationOrigin = FirDeclarationOrigin.Library ) : AbstractFirDeserializedSymbolProvider( session, moduleDataProvider, kotlinScopeProvider, defaultDeserializationOrigin, BuiltInSerializerProtocol ) { - private val metadataPartProvider = packagePartProvider as MetadataPartProvider - private val classDataFinder = MetadataClassDataFinder(kotlinClassFinder) private val annotationDeserializer = FirBuiltinAnnotationDeserializer(session) @@ -41,7 +38,7 @@ class MetadataSymbolProvider( private val constDeserializer = FirConstDeserializer(session, BuiltInSerializerProtocol) override fun computePackagePartsInfos(packageFqName: FqName): List { - return metadataPartProvider.findMetadataPackageParts(packageFqName.asString()).mapNotNull { partName -> + return packageAndMetadataPartProvider.findMetadataPackageParts(packageFqName.asString()).mapNotNull { partName -> if (partName in KotlinBuiltins) return@mapNotNull null 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) diff --git a/core/descriptors.jvm/src/org/jetbrains/kotlin/load/kotlin/JvmPackagePartProviderBase.kt b/core/descriptors.jvm/src/org/jetbrains/kotlin/load/kotlin/JvmPackagePartProviderBase.kt index 3d7a8c20dd6..cb45c9408ef 100644 --- a/core/descriptors.jvm/src/org/jetbrains/kotlin/load/kotlin/JvmPackagePartProviderBase.kt +++ b/core/descriptors.jvm/src/org/jetbrains/kotlin/load/kotlin/JvmPackagePartProviderBase.kt @@ -11,9 +11,8 @@ import org.jetbrains.kotlin.metadata.jvm.deserialization.PackageParts import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.serialization.deserialization.ClassData import org.jetbrains.kotlin.serialization.deserialization.DeserializationConfiguration -import org.jetbrains.kotlin.serialization.deserialization.MetadataPartProvider -abstract class JvmPackagePartProviderBase : PackagePartProvider, MetadataPartProvider { +abstract class JvmPackagePartProviderBase : PackageAndMetadataPartProvider { protected data class ModuleMappingInfo(val key: MappingsKey, val mapping: ModuleMapping, val name: String) diff --git a/core/deserialization.common.jvm/src/org/jetbrains/kotlin/load/kotlin/PackageAndMetadataPartProvider.kt b/core/deserialization.common.jvm/src/org/jetbrains/kotlin/load/kotlin/PackageAndMetadataPartProvider.kt new file mode 100644 index 00000000000..309eae95154 --- /dev/null +++ b/core/deserialization.common.jvm/src/org/jetbrains/kotlin/load/kotlin/PackageAndMetadataPartProvider.kt @@ -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 \ No newline at end of file