Extract new method from the publicly used interface for compatibility
Note that we can't just use ``@JvmDefault` annotation as the main change is in the `core` module which targets Java 6 #KT-42259 Fixed
This commit is contained in:
+2
-2
@@ -18,7 +18,7 @@ package org.jetbrains.kotlin.load.kotlin.incremental
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor
|
import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.PackageFragmentProvider
|
import org.jetbrains.kotlin.descriptors.PackageFragmentProviderOptimized
|
||||||
import org.jetbrains.kotlin.descriptors.impl.PackageFragmentDescriptorImpl
|
import org.jetbrains.kotlin.descriptors.impl.PackageFragmentDescriptorImpl
|
||||||
import org.jetbrains.kotlin.load.kotlin.JvmPackagePartSource
|
import org.jetbrains.kotlin.load.kotlin.JvmPackagePartSource
|
||||||
import org.jetbrains.kotlin.load.kotlin.KotlinClassFinder
|
import org.jetbrains.kotlin.load.kotlin.KotlinClassFinder
|
||||||
@@ -49,7 +49,7 @@ class IncrementalPackageFragmentProvider(
|
|||||||
val incrementalCache: IncrementalCache,
|
val incrementalCache: IncrementalCache,
|
||||||
val target: TargetId,
|
val target: TargetId,
|
||||||
private val kotlinClassFinder: KotlinClassFinder
|
private val kotlinClassFinder: KotlinClassFinder
|
||||||
) : PackageFragmentProvider {
|
) : PackageFragmentProviderOptimized {
|
||||||
private val fqNameToPackageFragment =
|
private val fqNameToPackageFragment =
|
||||||
PackagePartClassUtils.getFilesWithCallables(sourceFiles)
|
PackagePartClassUtils.getFilesWithCallables(sourceFiles)
|
||||||
.mapTo(hashSetOf()) { it.packageFqName }
|
.mapTo(hashSetOf()) { it.packageFqName }
|
||||||
|
|||||||
+1
-1
@@ -33,7 +33,7 @@ class OptionalAnnotationPackageFragmentProvider(
|
|||||||
notFoundClasses: NotFoundClasses,
|
notFoundClasses: NotFoundClasses,
|
||||||
languageVersionSettings: LanguageVersionSettings,
|
languageVersionSettings: LanguageVersionSettings,
|
||||||
packagePartProvider: PackagePartProvider,
|
packagePartProvider: PackagePartProvider,
|
||||||
) : PackageFragmentProvider {
|
) : PackageFragmentProviderOptimized {
|
||||||
val packages: Map<FqName, PackageFragmentDescriptor> by storageManager.createLazyValue p@{
|
val packages: Map<FqName, PackageFragmentDescriptor> by storageManager.createLazyValue p@{
|
||||||
// We call getAllOptionalAnnotationClasses under lazy value only because IncrementalPackagePartProvider requires
|
// We call getAllOptionalAnnotationClasses under lazy value only because IncrementalPackagePartProvider requires
|
||||||
// deserializationConfiguration to be injected.
|
// deserializationConfiguration to be injected.
|
||||||
|
|||||||
@@ -8,9 +8,7 @@ package org.jetbrains.kotlin.analyzer
|
|||||||
import com.intellij.openapi.util.ModificationTracker
|
import com.intellij.openapi.util.ModificationTracker
|
||||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||||
import org.jetbrains.kotlin.context.ProjectContext
|
import org.jetbrains.kotlin.context.ProjectContext
|
||||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
import org.jetbrains.kotlin.descriptors.*
|
||||||
import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor
|
|
||||||
import org.jetbrains.kotlin.descriptors.PackageFragmentProvider
|
|
||||||
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
|
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
@@ -238,7 +236,7 @@ private class DelegatingPackageFragmentProvider<M : ModuleInfo>(
|
|||||||
private val module: ModuleDescriptor,
|
private val module: ModuleDescriptor,
|
||||||
moduleContent: ModuleContent<M>,
|
moduleContent: ModuleContent<M>,
|
||||||
private val packageOracle: PackageOracle
|
private val packageOracle: PackageOracle
|
||||||
) : PackageFragmentProvider {
|
) : PackageFragmentProviderOptimized {
|
||||||
private val syntheticFilePackages = moduleContent.syntheticFiles.map { it.packageFqName }.toSet()
|
private val syntheticFilePackages = moduleContent.syntheticFiles.map { it.packageFqName }.toSet()
|
||||||
|
|
||||||
override fun getPackageFragments(fqName: FqName): List<PackageFragmentDescriptor> {
|
override fun getPackageFragments(fqName: FqName): List<PackageFragmentDescriptor> {
|
||||||
@@ -250,7 +248,7 @@ private class DelegatingPackageFragmentProvider<M : ModuleInfo>(
|
|||||||
override fun collectPackageFragments(fqName: FqName, packageFragments: MutableCollection<PackageFragmentDescriptor>) {
|
override fun collectPackageFragments(fqName: FqName, packageFragments: MutableCollection<PackageFragmentDescriptor>) {
|
||||||
if (certainlyDoesNotExist(fqName)) return
|
if (certainlyDoesNotExist(fqName)) return
|
||||||
|
|
||||||
resolverForProject.resolverForModuleDescriptor(module).packageFragmentProvider.collectPackageFragments(fqName, packageFragments)
|
resolverForProject.resolverForModuleDescriptor(module).packageFragmentProvider.collectPackageFragmentsOptimizedIfPossible(fqName, packageFragments)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getSubPackagesOf(fqName: FqName, nameFilter: (Name) -> Boolean): Collection<FqName> {
|
override fun getSubPackagesOf(fqName: FqName, nameFilter: (Name) -> Boolean): Collection<FqName> {
|
||||||
|
|||||||
@@ -179,7 +179,7 @@ public class ResolveSession implements KotlinCodeAnalyzer, LazyClassContext {
|
|||||||
|
|
||||||
this.declarationProviderFactory = declarationProviderFactory;
|
this.declarationProviderFactory = declarationProviderFactory;
|
||||||
|
|
||||||
this.packageFragmentProvider = new PackageFragmentProvider() {
|
this.packageFragmentProvider = new PackageFragmentProviderOptimized() {
|
||||||
@Override
|
@Override
|
||||||
public void collectPackageFragments(
|
public void collectPackageFragments(
|
||||||
@NotNull FqName fqName, @NotNull Collection<PackageFragmentDescriptor> packageFragments
|
@NotNull FqName fqName, @NotNull Collection<PackageFragmentDescriptor> packageFragments
|
||||||
|
|||||||
+2
-2
@@ -17,7 +17,7 @@
|
|||||||
package org.jetbrains.kotlin.load.java.lazy
|
package org.jetbrains.kotlin.load.java.lazy
|
||||||
|
|
||||||
import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor
|
import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.PackageFragmentProvider
|
import org.jetbrains.kotlin.descriptors.PackageFragmentProviderOptimized
|
||||||
import org.jetbrains.kotlin.load.java.lazy.descriptors.LazyJavaPackageFragment
|
import org.jetbrains.kotlin.load.java.lazy.descriptors.LazyJavaPackageFragment
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
@@ -26,7 +26,7 @@ import org.jetbrains.kotlin.utils.addIfNotNull
|
|||||||
|
|
||||||
class LazyJavaPackageFragmentProvider(
|
class LazyJavaPackageFragmentProvider(
|
||||||
components: JavaResolverComponents
|
components: JavaResolverComponents
|
||||||
) : PackageFragmentProvider {
|
) : PackageFragmentProviderOptimized {
|
||||||
|
|
||||||
private val c = LazyJavaResolverContext(components, TypeParameterResolver.EMPTY, lazyOf(null))
|
private val c = LazyJavaResolverContext(components, TypeParameterResolver.EMPTY, lazyOf(null))
|
||||||
|
|
||||||
|
|||||||
@@ -20,27 +20,35 @@ import org.jetbrains.kotlin.name.FqName
|
|||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
interface PackageFragmentProvider {
|
interface PackageFragmentProvider {
|
||||||
fun collectPackageFragments(fqName: FqName, packageFragments: MutableCollection<PackageFragmentDescriptor>) {
|
|
||||||
// default implementation is provided only for BWC
|
|
||||||
packageFragments.addAll(getPackageFragments(fqName))
|
|
||||||
}
|
|
||||||
|
|
||||||
@Deprecated("for usages use #packageFragments(FqName) at final point, for impl use #collectPackageFragments(FqName, MutableCollection<PackageFragmentDescriptor>)")
|
@Deprecated("for usages use #packageFragments(FqName) at final point, for impl use #collectPackageFragments(FqName, MutableCollection<PackageFragmentDescriptor>)")
|
||||||
fun getPackageFragments(fqName: FqName): List<PackageFragmentDescriptor>
|
fun getPackageFragments(fqName: FqName): List<PackageFragmentDescriptor>
|
||||||
|
|
||||||
fun getSubPackagesOf(fqName: FqName, nameFilter: (Name) -> Boolean): Collection<FqName>
|
fun getSubPackagesOf(fqName: FqName, nameFilter: (Name) -> Boolean): Collection<FqName>
|
||||||
|
|
||||||
object Empty : PackageFragmentProvider {
|
object Empty : PackageFragmentProvider {
|
||||||
override fun collectPackageFragments(fqName: FqName, packageFragments: MutableCollection<PackageFragmentDescriptor>) {}
|
|
||||||
|
|
||||||
override fun getPackageFragments(fqName: FqName) = emptyList<PackageFragmentDescriptor>()
|
override fun getPackageFragments(fqName: FqName) = emptyList<PackageFragmentDescriptor>()
|
||||||
|
|
||||||
override fun getSubPackagesOf(fqName: FqName, nameFilter: (Name) -> Boolean) = emptySet<FqName>()
|
override fun getSubPackagesOf(fqName: FqName, nameFilter: (Name) -> Boolean) = emptySet<FqName>()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface PackageFragmentProviderOptimized : PackageFragmentProvider {
|
||||||
|
fun collectPackageFragments(fqName: FqName, packageFragments: MutableCollection<PackageFragmentDescriptor>)
|
||||||
|
}
|
||||||
|
|
||||||
fun PackageFragmentProvider.packageFragments(fqName: FqName): List<PackageFragmentDescriptor> {
|
fun PackageFragmentProvider.packageFragments(fqName: FqName): List<PackageFragmentDescriptor> {
|
||||||
val packageFragments = mutableListOf<PackageFragmentDescriptor>()
|
val packageFragments = mutableListOf<PackageFragmentDescriptor>()
|
||||||
collectPackageFragments(fqName, packageFragments)
|
collectPackageFragmentsOptimizedIfPossible(fqName, packageFragments)
|
||||||
return packageFragments
|
return packageFragments
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun PackageFragmentProvider.collectPackageFragmentsOptimizedIfPossible(
|
||||||
|
fqName: FqName,
|
||||||
|
packageFragments: MutableCollection<PackageFragmentDescriptor>
|
||||||
|
) {
|
||||||
|
when (this) {
|
||||||
|
is PackageFragmentProviderOptimized -> collectPackageFragments(fqName, packageFragments)
|
||||||
|
else -> packageFragments.addAll(getPackageFragments(fqName))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -21,7 +21,7 @@ import org.jetbrains.kotlin.name.Name
|
|||||||
|
|
||||||
class PackageFragmentProviderImpl(
|
class PackageFragmentProviderImpl(
|
||||||
private val packageFragments: Collection<PackageFragmentDescriptor>
|
private val packageFragments: Collection<PackageFragmentDescriptor>
|
||||||
) : PackageFragmentProvider {
|
) : PackageFragmentProviderOptimized {
|
||||||
override fun collectPackageFragments(fqName: FqName, packageFragments: MutableCollection<PackageFragmentDescriptor>) {
|
override fun collectPackageFragments(fqName: FqName, packageFragments: MutableCollection<PackageFragmentDescriptor>) {
|
||||||
this.packageFragments.filterTo(packageFragments) { it.fqName == fqName }
|
this.packageFragments.filterTo(packageFragments) { it.fqName == fqName }
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-3
@@ -18,13 +18,15 @@ package org.jetbrains.kotlin.descriptors.impl
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor
|
import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.PackageFragmentProvider
|
import org.jetbrains.kotlin.descriptors.PackageFragmentProvider
|
||||||
|
import org.jetbrains.kotlin.descriptors.PackageFragmentProviderOptimized
|
||||||
|
import org.jetbrains.kotlin.descriptors.collectPackageFragmentsOptimizedIfPossible
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import java.util.*
|
import java.util.*
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
class CompositePackageFragmentProvider(// can be modified from outside
|
class CompositePackageFragmentProvider(// can be modified from outside
|
||||||
private val providers: List<PackageFragmentProvider>
|
private val providers: List<PackageFragmentProvider>
|
||||||
) : PackageFragmentProvider {
|
) : PackageFragmentProviderOptimized {
|
||||||
|
|
||||||
init {
|
init {
|
||||||
assert(providers.size == providers.toSet().size) {
|
assert(providers.size == providers.toSet().size) {
|
||||||
@@ -35,14 +37,14 @@ class CompositePackageFragmentProvider(// can be modified from outside
|
|||||||
override fun getPackageFragments(fqName: FqName): List<PackageFragmentDescriptor> {
|
override fun getPackageFragments(fqName: FqName): List<PackageFragmentDescriptor> {
|
||||||
val result = ArrayList<PackageFragmentDescriptor>()
|
val result = ArrayList<PackageFragmentDescriptor>()
|
||||||
for (provider in providers) {
|
for (provider in providers) {
|
||||||
provider.collectPackageFragments(fqName, result)
|
provider.collectPackageFragmentsOptimizedIfPossible(fqName, result)
|
||||||
}
|
}
|
||||||
return result.toList()
|
return result.toList()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun collectPackageFragments(fqName: FqName, packageFragments: MutableCollection<PackageFragmentDescriptor>) {
|
override fun collectPackageFragments(fqName: FqName, packageFragments: MutableCollection<PackageFragmentDescriptor>) {
|
||||||
for (provider in providers) {
|
for (provider in providers) {
|
||||||
provider.collectPackageFragments(fqName, packageFragments)
|
provider.collectPackageFragmentsOptimizedIfPossible(fqName, packageFragments)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -18,7 +18,7 @@ package org.jetbrains.kotlin.serialization.deserialization
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor
|
import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.PackageFragmentProvider
|
import org.jetbrains.kotlin.descriptors.PackageFragmentProviderOptimized
|
||||||
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.storage.StorageManager
|
import org.jetbrains.kotlin.storage.StorageManager
|
||||||
@@ -28,7 +28,7 @@ abstract class AbstractDeserializedPackageFragmentProvider(
|
|||||||
protected val storageManager: StorageManager,
|
protected val storageManager: StorageManager,
|
||||||
protected val finder: KotlinMetadataFinder,
|
protected val finder: KotlinMetadataFinder,
|
||||||
protected val moduleDescriptor: ModuleDescriptor
|
protected val moduleDescriptor: ModuleDescriptor
|
||||||
) : PackageFragmentProvider {
|
) : PackageFragmentProviderOptimized {
|
||||||
protected lateinit var components: DeserializationComponents
|
protected lateinit var components: DeserializationComponents
|
||||||
|
|
||||||
private val fragments = storageManager.createMemoizedFunctionWithNullableValues<FqName, PackageFragmentDescriptor> { fqName ->
|
private val fragments = storageManager.createMemoizedFunctionWithNullableValues<FqName, PackageFragmentDescriptor> { fqName ->
|
||||||
|
|||||||
+2
-1
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.idea.decompiler.textBuilder
|
|||||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||||
import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor
|
import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.PackageFragmentProvider
|
import org.jetbrains.kotlin.descriptors.PackageFragmentProvider
|
||||||
|
import org.jetbrains.kotlin.descriptors.PackageFragmentProviderOptimized
|
||||||
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
|
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
|
||||||
import org.jetbrains.kotlin.descriptors.impl.MutablePackageFragmentDescriptor
|
import org.jetbrains.kotlin.descriptors.impl.MutablePackageFragmentDescriptor
|
||||||
import org.jetbrains.kotlin.name.ClassId
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
@@ -28,7 +29,7 @@ abstract class DeserializerForDecompilerBase(val directoryPackageFqName: FqName)
|
|||||||
|
|
||||||
protected val moduleDescriptor: ModuleDescriptorImpl = createDummyModule("module for building decompiled sources")
|
protected val moduleDescriptor: ModuleDescriptorImpl = createDummyModule("module for building decompiled sources")
|
||||||
|
|
||||||
protected val packageFragmentProvider: PackageFragmentProvider = object : PackageFragmentProvider {
|
protected val packageFragmentProvider: PackageFragmentProvider = object : PackageFragmentProviderOptimized {
|
||||||
override fun collectPackageFragments(fqName: FqName, packageFragments: MutableCollection<PackageFragmentDescriptor>) {
|
override fun collectPackageFragments(fqName: FqName, packageFragments: MutableCollection<PackageFragmentDescriptor>) {
|
||||||
packageFragments.add(createDummyPackageFragment(fqName))
|
packageFragments.add(createDummyPackageFragment(fqName))
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-1
@@ -7,10 +7,11 @@ package org.jetbrains.kotlin.descriptors.commonizer.builder
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor
|
import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.PackageFragmentProvider
|
import org.jetbrains.kotlin.descriptors.PackageFragmentProvider
|
||||||
|
import org.jetbrains.kotlin.descriptors.PackageFragmentProviderOptimized
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
internal class CommonizedPackageFragmentProvider : PackageFragmentProvider {
|
internal class CommonizedPackageFragmentProvider : PackageFragmentProviderOptimized {
|
||||||
private val packageFragments = ArrayList<PackageFragmentDescriptor>()
|
private val packageFragments = ArrayList<PackageFragmentDescriptor>()
|
||||||
|
|
||||||
operator fun plusAssign(packageFragment: PackageFragmentDescriptor) {
|
operator fun plusAssign(packageFragment: PackageFragmentDescriptor) {
|
||||||
|
|||||||
+2
-1
@@ -28,6 +28,7 @@ import org.jetbrains.kotlin.android.synthetic.forEachUntilLast
|
|||||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor
|
import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.PackageFragmentProvider
|
import org.jetbrains.kotlin.descriptors.PackageFragmentProvider
|
||||||
|
import org.jetbrains.kotlin.descriptors.PackageFragmentProviderOptimized
|
||||||
import org.jetbrains.kotlin.incremental.components.LookupTracker
|
import org.jetbrains.kotlin.incremental.components.LookupTracker
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
@@ -132,7 +133,7 @@ abstract class AndroidPackageFragmentProviderExtension : PackageFragmentProvider
|
|||||||
|
|
||||||
class AndroidSyntheticPackageFragmentProvider(
|
class AndroidSyntheticPackageFragmentProvider(
|
||||||
val packages: Map<FqName, () -> PackageFragmentDescriptor>
|
val packages: Map<FqName, () -> PackageFragmentDescriptor>
|
||||||
) : PackageFragmentProvider {
|
) : PackageFragmentProviderOptimized {
|
||||||
override fun collectPackageFragments(fqName: FqName, packageFragments: MutableCollection<PackageFragmentDescriptor>) =
|
override fun collectPackageFragments(fqName: FqName, packageFragments: MutableCollection<PackageFragmentDescriptor>) =
|
||||||
packageFragments.addIfNotNull(packages[fqName]?.invoke())
|
packageFragments.addIfNotNull(packages[fqName]?.invoke())
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user