Added deprecated PackageFragmentProvider#getPackageFragments for BWC
Relates to ^KT-33394 ^KT-42259 Fixed
This commit is contained in:
@@ -20,20 +20,27 @@ import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
|
||||
interface PackageFragmentProvider {
|
||||
fun collectPackageFragments(fqName: FqName, packageFragments: MutableCollection<PackageFragmentDescriptor>)
|
||||
|
||||
fun getPackageFragments(fqName: FqName): List<PackageFragmentDescriptor> {
|
||||
val packageFragments = mutableListOf<PackageFragmentDescriptor>()
|
||||
collectPackageFragments(fqName, packageFragments)
|
||||
return packageFragments
|
||||
fun collectPackageFragments(fqName: FqName, packageFragments: MutableCollection<PackageFragmentDescriptor>) {
|
||||
// default implementation is provided only for BWC
|
||||
packageFragments.addAll(getPackageFragments(fqName))
|
||||
}
|
||||
|
||||
fun getSubPackagesOf(fqName: FqName, nameFilter: (Name) -> Boolean): Collection<FqName>
|
||||
@Deprecated("for usages use #packageFragments(FqName) at final point, for impl use #collectPackageFragments(FqName, MutableCollection<PackageFragmentDescriptor>)")
|
||||
fun getPackageFragments(fqName: FqName): List<PackageFragmentDescriptor>
|
||||
|
||||
fun getSubPackagesOf(fqName: FqName, nameFilter: (Name) -> Boolean): Collection<FqName>
|
||||
|
||||
object Empty : PackageFragmentProvider {
|
||||
override fun collectPackageFragments(fqName: FqName, packageFragments: MutableCollection<PackageFragmentDescriptor>) {}
|
||||
|
||||
override fun getPackageFragments(fqName: FqName) = emptyList<PackageFragmentDescriptor>()
|
||||
|
||||
override fun getSubPackagesOf(fqName: FqName, nameFilter: (Name) -> Boolean) = emptySet<FqName>()
|
||||
}
|
||||
}
|
||||
|
||||
fun PackageFragmentProvider.packageFragments(fqName: FqName): List<PackageFragmentDescriptor> {
|
||||
val packageFragments = mutableListOf<PackageFragmentDescriptor>()
|
||||
collectPackageFragments(fqName, packageFragments)
|
||||
return packageFragments
|
||||
}
|
||||
|
||||
@@ -26,6 +26,9 @@ class PackageFragmentProviderImpl(
|
||||
this.packageFragments.filterTo(packageFragments) { it.fqName == fqName }
|
||||
}
|
||||
|
||||
override fun getPackageFragments(fqName: FqName): List<PackageFragmentDescriptor> =
|
||||
packageFragments.filter { it.fqName == fqName }
|
||||
|
||||
override fun getSubPackagesOf(fqName: FqName, nameFilter: (Name) -> Boolean): Collection<FqName> =
|
||||
packageFragments.asSequence()
|
||||
.map { it.fqName }
|
||||
|
||||
+8
@@ -32,6 +32,14 @@ class CompositePackageFragmentProvider(// can be modified from outside
|
||||
}
|
||||
}
|
||||
|
||||
override fun getPackageFragments(fqName: FqName): List<PackageFragmentDescriptor> {
|
||||
val result = ArrayList<PackageFragmentDescriptor>()
|
||||
for (provider in providers) {
|
||||
provider.collectPackageFragments(fqName, result)
|
||||
}
|
||||
return result.toList()
|
||||
}
|
||||
|
||||
override fun collectPackageFragments(fqName: FqName, packageFragments: MutableCollection<PackageFragmentDescriptor>) {
|
||||
for (provider in providers) {
|
||||
provider.collectPackageFragments(fqName, packageFragments)
|
||||
|
||||
+2
-1
@@ -20,6 +20,7 @@ import org.jetbrains.kotlin.descriptors.DeclarationDescriptorVisitor
|
||||
import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.PackageViewDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
||||
import org.jetbrains.kotlin.descriptors.packageFragments
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.resolve.scopes.ChainedMemberScope
|
||||
import org.jetbrains.kotlin.resolve.scopes.LazyScopeAdapter
|
||||
@@ -34,7 +35,7 @@ class LazyPackageViewDescriptorImpl(
|
||||
) : DeclarationDescriptorImpl(Annotations.EMPTY, fqName.shortNameOrSpecial()), PackageViewDescriptor {
|
||||
|
||||
override val fragments: List<PackageFragmentDescriptor> by storageManager.createLazyValue {
|
||||
module.packageFragmentProvider.getPackageFragments(fqName)
|
||||
module.packageFragmentProvider.packageFragments(fqName)
|
||||
}
|
||||
|
||||
override val memberScope: MemberScope = LazyScopeAdapter(storageManager) {
|
||||
|
||||
+2
@@ -43,5 +43,7 @@ abstract class AbstractDeserializedPackageFragmentProvider(
|
||||
packageFragments.addIfNotNull(fragments(fqName))
|
||||
}
|
||||
|
||||
override fun getPackageFragments(fqName: FqName): List<PackageFragmentDescriptor> = listOfNotNull(fragments(fqName))
|
||||
|
||||
override fun getSubPackagesOf(fqName: FqName, nameFilter: (Name) -> Boolean): Collection<FqName> = emptySet()
|
||||
}
|
||||
|
||||
+2
-1
@@ -18,6 +18,7 @@ package org.jetbrains.kotlin.serialization.deserialization
|
||||
|
||||
import org.jetbrains.kotlin.builtins.StandardNames
|
||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.packageFragments
|
||||
import org.jetbrains.kotlin.metadata.deserialization.TypeTable
|
||||
import org.jetbrains.kotlin.metadata.deserialization.VersionRequirementTable
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
@@ -52,7 +53,7 @@ class ClassDeserializer(private val components: DeserializationComponents) {
|
||||
|
||||
outerClass.c
|
||||
} else {
|
||||
val fragments = components.packageFragmentProvider.getPackageFragments(classId.packageFqName)
|
||||
val fragments = components.packageFragmentProvider.packageFragments(classId.packageFqName)
|
||||
val fragment = fragments.firstOrNull { it !is DeserializedPackageFragment || it.hasTopLevelClass(classId.shortClassName) }
|
||||
?: return null
|
||||
|
||||
|
||||
+2
-1
@@ -17,11 +17,12 @@
|
||||
package org.jetbrains.kotlin.serialization.deserialization
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.PackageFragmentProvider
|
||||
import org.jetbrains.kotlin.descriptors.packageFragments
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
|
||||
class DeserializedClassDataFinder(private val packageFragmentProvider: PackageFragmentProvider) : ClassDataFinder {
|
||||
override fun findClassData(classId: ClassId): ClassData? {
|
||||
val packageFragments = packageFragmentProvider.getPackageFragments(classId.packageFqName)
|
||||
val packageFragments = packageFragmentProvider.packageFragments(classId.packageFqName)
|
||||
for (fragment in packageFragments) {
|
||||
if (fragment !is DeserializedPackageFragment) continue
|
||||
|
||||
|
||||
Reference in New Issue
Block a user