Remove direct usages of ModuleDescriptor#getPackageFragmentProvider()

This commit is contained in:
Pavel V. Talanov
2015-05-07 14:23:52 +03:00
parent 23dabf595a
commit e4c242e66b
14 changed files with 41 additions and 40 deletions
@@ -17,22 +17,18 @@
package org.jetbrains.kotlin.descriptors
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.descriptors.impl.PackageViewDescriptorImpl
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.platform.PlatformToKotlinClassMap
import org.jetbrains.kotlin.resolve.ImportPath
import org.jetbrains.kotlin.types.TypeSubstitutor
public trait ModuleDescriptor : DeclarationDescriptor, ModuleParameters {
public fun getPackage(fqName: FqName): PackageViewDescriptor?
public fun getSubPackagesOf(fqName: FqName, nameFilter: (Name) -> Boolean): Collection<FqName>
override fun getContainingDeclaration(): DeclarationDescriptor? = null
public fun getPackageFragmentProvider(): PackageFragmentProvider
public fun getPackage(fqName: FqName): PackageViewDescriptor? {
val fragments = getPackageFragmentProvider().getPackageFragments(fqName)
return if (!fragments.isEmpty()) PackageViewDescriptorImpl(this, fqName, fragments) else null
}
public val builtIns: KotlinBuiltIns
public fun isFriend(other: ModuleDescriptor): Boolean
@@ -22,9 +22,6 @@ import org.jetbrains.kotlin.name.Name
public trait PackageFragmentProvider {
public fun getPackageFragments(fqName: FqName): List<PackageFragmentDescriptor>
/**
* @return declared subpackages of a package with the FQ name given by [fqName]
*/
public fun getSubPackagesOf(fqName: FqName, nameFilter: (Name) -> Boolean): Collection<FqName>
@@ -21,6 +21,8 @@ import org.jetbrains.annotations.Nullable;
import org.jetbrains.kotlin.name.FqName;
import org.jetbrains.kotlin.resolve.scopes.JetScope;
import java.util.List;
public interface PackageViewDescriptor extends DeclarationDescriptor {
@Override
@Nullable
@@ -34,4 +36,7 @@ public interface PackageViewDescriptor extends DeclarationDescriptor {
@NotNull
ModuleDescriptor getModule();
@NotNull
List<PackageFragmentDescriptor> getFragments();
}
@@ -20,7 +20,9 @@ import org.jetbrains.kotlin.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
import org.jetbrains.kotlin.descriptors.ModuleParameters
import org.jetbrains.kotlin.descriptors.PackageFragmentProvider
import org.jetbrains.kotlin.descriptors.PackageViewDescriptor
import org.jetbrains.kotlin.descriptors.annotations.Annotations
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.storage.StorageManager
import java.util.ArrayList
@@ -89,7 +91,14 @@ public class ModuleDescriptorImpl(
packageFragmentProviderForModuleContent = providerForModuleContent
}
override fun getPackageFragmentProvider() = packageFragmentProviderForWholeModuleWithDependencies
override fun getPackage(fqName: FqName): PackageViewDescriptor? {
val fragments = packageFragmentProviderForWholeModuleWithDependencies.getPackageFragments(fqName)
return if (!fragments.isEmpty()) PackageViewDescriptorImpl(this, fqName, fragments) else null
}
override fun getSubPackagesOf(fqName: FqName, nameFilter: (Name) -> Boolean): Collection<FqName> {
return packageFragmentProviderForWholeModuleWithDependencies.getSubPackagesOf(fqName, nameFilter)
}
private val friendModules = LinkedHashSet<ModuleDescriptor>()
@@ -26,7 +26,7 @@ import org.jetbrains.kotlin.types.TypeSubstitutor
public class PackageViewDescriptorImpl(
private val module: ModuleDescriptor,
private val fqName: FqName,
fragments: List<PackageFragmentDescriptor>
private val fragments: List<PackageFragmentDescriptor>
) : DeclarationDescriptorImpl(Annotations.EMPTY, fqName.shortNameOrSpecial()), PackageViewDescriptor {
private val memberScope: JetScope = run {
assert(fragments.isNotEmpty()) { "$fqName in module" }
@@ -47,6 +47,8 @@ public class PackageViewDescriptorImpl(
override fun getModule(): ModuleDescriptor = module
override fun getFragments() = fragments
override fun equals(other: Any?): Boolean {
if (javaClass != other?.javaClass) return false
@@ -38,7 +38,7 @@ public class SubpackagesScope(private val containingDeclaration: PackageViewDesc
nameFilter: (Name) -> Boolean): Collection<DeclarationDescriptor> {
if (!kindFilter.acceptsKinds(DescriptorKindFilter.PACKAGES_MASK)) return listOf()
val subFqNames = containingDeclaration.getModule().getPackageFragmentProvider().getSubPackagesOf(containingDeclaration.getFqName(), nameFilter)
val subFqNames = containingDeclaration.getModule().getSubPackagesOf(containingDeclaration.getFqName(), nameFilter)
val result = ArrayList<DeclarationDescriptor>(subFqNames.size())
for (subFqName in subFqNames) {
val shortName = subFqName.shortName()