Added deprecated PackageFragmentProvider#getPackageFragments for BWC
Relates to ^KT-33394 ^KT-42259 Fixed
This commit is contained in:
+34
-30
@@ -42,24 +42,28 @@ import org.jetbrains.kotlin.utils.addIfNotNull
|
||||
import org.jetbrains.kotlin.utils.keysToMap
|
||||
|
||||
class IncrementalPackageFragmentProvider(
|
||||
sourceFiles: Collection<KtFile>,
|
||||
val moduleDescriptor: ModuleDescriptor,
|
||||
val storageManager: StorageManager,
|
||||
val deserializationComponents: DeserializationComponents,
|
||||
val incrementalCache: IncrementalCache,
|
||||
val target: TargetId,
|
||||
private val kotlinClassFinder: KotlinClassFinder
|
||||
sourceFiles: Collection<KtFile>,
|
||||
val moduleDescriptor: ModuleDescriptor,
|
||||
val storageManager: StorageManager,
|
||||
val deserializationComponents: DeserializationComponents,
|
||||
val incrementalCache: IncrementalCache,
|
||||
val target: TargetId,
|
||||
private val kotlinClassFinder: KotlinClassFinder
|
||||
) : PackageFragmentProvider {
|
||||
private val fqNameToPackageFragment =
|
||||
PackagePartClassUtils.getFilesWithCallables(sourceFiles)
|
||||
.mapTo(hashSetOf()) { it.packageFqName }
|
||||
.keysToMap(this::IncrementalPackageFragment)
|
||||
PackagePartClassUtils.getFilesWithCallables(sourceFiles)
|
||||
.mapTo(hashSetOf()) { it.packageFqName }
|
||||
.keysToMap(this::IncrementalPackageFragment)
|
||||
|
||||
override fun getSubPackagesOf(fqName: FqName, nameFilter: (Name) -> Boolean): Collection<FqName> = emptySet()
|
||||
|
||||
override fun collectPackageFragments(fqName: FqName, packageFragments: MutableCollection<PackageFragmentDescriptor>) =
|
||||
packageFragments.addIfNotNull(fqNameToPackageFragment[fqName])
|
||||
|
||||
override fun getPackageFragments(fqName: FqName): List<PackageFragmentDescriptor> {
|
||||
return listOfNotNull(fqNameToPackageFragment[fqName])
|
||||
}
|
||||
|
||||
inner class IncrementalPackageFragment(fqName: FqName) : PackageFragmentDescriptorImpl(moduleDescriptor, fqName) {
|
||||
val target: TargetId
|
||||
get() = this@IncrementalPackageFragmentProvider.target
|
||||
@@ -74,34 +78,34 @@ class IncrementalPackageFragmentProvider(
|
||||
}
|
||||
|
||||
inner class IncrementalMultifileClassPackageFragment(
|
||||
val facadeName: JvmClassName,
|
||||
val partsInternalNames: Collection<String>,
|
||||
packageFqName: FqName
|
||||
val facadeName: JvmClassName,
|
||||
val partsInternalNames: Collection<String>,
|
||||
packageFqName: FqName
|
||||
) : PackageFragmentDescriptorImpl(moduleDescriptor, packageFqName) {
|
||||
private val memberScope = storageManager.createLazyValue {
|
||||
ChainedMemberScope.create(
|
||||
"Member scope for incremental compilation: union of multifile class parts data for $facadeName",
|
||||
partsInternalNames.mapNotNull { internalName ->
|
||||
incrementalCache.getPackagePartData(internalName)?.let { (data, strings) ->
|
||||
val (nameResolver, packageProto) = JvmProtoBufUtil.readPackageDataFrom(data, strings)
|
||||
"Member scope for incremental compilation: union of multifile class parts data for $facadeName",
|
||||
partsInternalNames.mapNotNull { internalName ->
|
||||
incrementalCache.getPackagePartData(internalName)?.let { (data, strings) ->
|
||||
val (nameResolver, packageProto) = JvmProtoBufUtil.readPackageDataFrom(data, strings)
|
||||
|
||||
val partName = JvmClassName.byInternalName(internalName)
|
||||
val jvmBinaryClass =
|
||||
kotlinClassFinder.findKotlinClass(ClassId.topLevel(partName.fqNameForTopLevelClassMaybeWithDollars))
|
||||
val partName = JvmClassName.byInternalName(internalName)
|
||||
val jvmBinaryClass =
|
||||
kotlinClassFinder.findKotlinClass(ClassId.topLevel(partName.fqNameForTopLevelClassMaybeWithDollars))
|
||||
|
||||
val metadataVersion =
|
||||
jvmBinaryClass?.classHeader?.metadataVersion
|
||||
val metadataVersion =
|
||||
jvmBinaryClass?.classHeader?.metadataVersion
|
||||
?: JvmMetadataVersion.INSTANCE
|
||||
|
||||
DeserializedPackageMemberScope(
|
||||
this, packageProto, nameResolver, metadataVersion,
|
||||
JvmPackagePartSource(
|
||||
partName, facadeName, packageProto, nameResolver, knownJvmBinaryClass = jvmBinaryClass
|
||||
),
|
||||
deserializationComponents, classNames = { emptyList() }
|
||||
)
|
||||
}
|
||||
DeserializedPackageMemberScope(
|
||||
this, packageProto, nameResolver, metadataVersion,
|
||||
JvmPackagePartSource(
|
||||
partName, facadeName, packageProto, nameResolver, knownJvmBinaryClass = jvmBinaryClass
|
||||
),
|
||||
deserializationComponents, classNames = { emptyList() }
|
||||
)
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
+3
@@ -83,6 +83,9 @@ class OptionalAnnotationPackageFragmentProvider(
|
||||
override fun collectPackageFragments(fqName: FqName, packageFragments: MutableCollection<PackageFragmentDescriptor>) =
|
||||
packageFragments.addIfNotNull(packages[fqName])
|
||||
|
||||
override fun getPackageFragments(fqName: FqName): List<PackageFragmentDescriptor> =
|
||||
packages[fqName]?.let(::listOf).orEmpty()
|
||||
|
||||
override fun getSubPackagesOf(fqName: FqName, nameFilter: (Name) -> Boolean): Collection<FqName> =
|
||||
emptyList()
|
||||
}
|
||||
|
||||
@@ -241,6 +241,12 @@ private class DelegatingPackageFragmentProvider<M : ModuleInfo>(
|
||||
) : PackageFragmentProvider {
|
||||
private val syntheticFilePackages = moduleContent.syntheticFiles.map { it.packageFqName }.toSet()
|
||||
|
||||
override fun getPackageFragments(fqName: FqName): List<PackageFragmentDescriptor> {
|
||||
if (certainlyDoesNotExist(fqName)) return emptyList()
|
||||
|
||||
return resolverForProject.resolverForModuleDescriptor(module).packageFragmentProvider.getPackageFragments(fqName)
|
||||
}
|
||||
|
||||
override fun collectPackageFragments(fqName: FqName, packageFragments: MutableCollection<PackageFragmentDescriptor>) {
|
||||
if (certainlyDoesNotExist(fqName)) return
|
||||
|
||||
|
||||
+1
-1
@@ -83,7 +83,7 @@ class DescriptorByIdSignatureFinder(
|
||||
LookupMode.MODULE_ONLY -> {
|
||||
(moduleDescriptor as ModuleDescriptorImpl)
|
||||
.packageFragmentProviderForModuleContentWithoutDependencies
|
||||
.getPackageFragments(packageFqName)
|
||||
.packageFragments(packageFqName)
|
||||
.flatMap { it.getMemberScope().loadDescriptors(declarationName, isLeaf) }
|
||||
}
|
||||
}
|
||||
|
||||
+2
-1
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.backend.common.serialization.metadata
|
||||
|
||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.packageFragments
|
||||
import org.jetbrains.kotlin.library.SerializedMetadata
|
||||
import org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf
|
||||
import org.jetbrains.kotlin.metadata.ProtoBuf
|
||||
@@ -28,7 +29,7 @@ class KlibMetadataMonolithicSerializer(
|
||||
private fun serializePackageFragment(fqName: FqName, module: ModuleDescriptor): List<ProtoBuf.PackageFragment> {
|
||||
|
||||
val fragments = if (includeOnlyModuleContent) {
|
||||
module.packageFragmentProviderForModuleContentWithoutDependencies.getPackageFragments(fqName)
|
||||
module.packageFragmentProviderForModuleContentWithoutDependencies.packageFragments(fqName)
|
||||
} else {
|
||||
module.getPackage(fqName).fragments.filter { it.module == module }
|
||||
}
|
||||
|
||||
+2
-1
@@ -12,6 +12,7 @@ import org.jetbrains.kotlin.builtins.StandardNames.COLLECTIONS_PACKAGE_FQ_NAME
|
||||
import org.jetbrains.kotlin.builtins.StandardNames.RANGES_PACKAGE_FQ_NAME
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
||||
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
|
||||
import org.jetbrains.kotlin.descriptors.packageFragments
|
||||
import org.jetbrains.kotlin.renderer.AnnotationArgumentsRenderingPolicy
|
||||
import org.jetbrains.kotlin.renderer.DescriptorRenderer
|
||||
import org.jetbrains.kotlin.renderer.DescriptorRendererModifier
|
||||
@@ -36,7 +37,7 @@ abstract class AbstractBuiltInsWithJDKMembersTest : KotlinTestWithEnvironment()
|
||||
val module = JvmResolveUtil.analyze(environment).moduleDescriptor as ModuleDescriptorImpl
|
||||
|
||||
for (packageFqName in listOf(BUILT_INS_PACKAGE_FQ_NAME, COLLECTIONS_PACKAGE_FQ_NAME, RANGES_PACKAGE_FQ_NAME)) {
|
||||
val loaded = module.packageFragmentProvider.getPackageFragments(packageFqName)
|
||||
val loaded = module.packageFragmentProvider.packageFragments(packageFqName)
|
||||
.filterIsInstance<BuiltInsPackageFragment>()
|
||||
.single { !it.isFallback }
|
||||
RecursiveDescriptorComparator.validateAndCompareDescriptorWithFile(
|
||||
|
||||
+1
-1
@@ -78,7 +78,7 @@ class NonStableParameterNamesSerializationTest : TestCaseWithTmpdir() {
|
||||
|
||||
fun recurse(packageFqName: FqName) {
|
||||
packageFragmentProvider
|
||||
.getPackageFragments(packageFqName)
|
||||
.packageFragments(packageFqName)
|
||||
.forEach { packageFragment ->
|
||||
recurse(packageFragment.getMemberScope())
|
||||
}
|
||||
|
||||
@@ -26,6 +26,7 @@ import org.jetbrains.kotlin.codegen.forTestCompile.ForTestCompileRuntime;
|
||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor;
|
||||
import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor;
|
||||
import org.jetbrains.kotlin.descriptors.PackageFragmentProvider;
|
||||
import org.jetbrains.kotlin.descriptors.PackageFragmentProviderKt;
|
||||
import org.jetbrains.kotlin.descriptors.deserialization.AdditionalClassPartsProvider;
|
||||
import org.jetbrains.kotlin.descriptors.deserialization.PlatformDependentDeclarationFilter;
|
||||
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl;
|
||||
@@ -59,7 +60,7 @@ public class LoadBuiltinsTest extends KotlinTestWithEnvironment {
|
||||
CollectionsKt.single(module.getPackage(packageFqName).getFragments());
|
||||
if (fromLazyResolve instanceof LazyPackageDescriptor) {
|
||||
PackageFragmentDescriptor deserialized =
|
||||
CollectionsKt.single(packageFragmentProvider.getPackageFragments(packageFqName));
|
||||
CollectionsKt.single(PackageFragmentProviderKt.packageFragments(packageFragmentProvider, packageFqName));
|
||||
RecursiveDescriptorComparator.validateAndCompareDescriptors(
|
||||
fromLazyResolve, deserialized, AbstractBuiltInsWithJDKMembersTest.createComparatorConfiguration(),
|
||||
new File("compiler/testData/builtin-classes/default/" + packageFqName.asString().replace('.', '-') + ".txt")
|
||||
|
||||
Reference in New Issue
Block a user