Fixed completion of explicitly imported non-top level packages broken by optimization before
This commit is contained in:
@@ -21,6 +21,7 @@ import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.PackageViewDescriptor
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindExclude
|
||||
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter
|
||||
import org.jetbrains.kotlin.resolve.scopes.JetScopeImpl
|
||||
import org.jetbrains.kotlin.utils.Printer
|
||||
@@ -47,6 +48,7 @@ public class SubpackagesScope(private val moduleDescriptor: ModuleDescriptor, pr
|
||||
override fun getDescriptors(kindFilter: DescriptorKindFilter,
|
||||
nameFilter: (Name) -> Boolean): Collection<DeclarationDescriptor> {
|
||||
if (!kindFilter.acceptsKinds(DescriptorKindFilter.PACKAGES_MASK)) return listOf()
|
||||
if (fqName.isRoot() && kindFilter.excludes.contains(DescriptorKindExclude.TopLevelPackages)) return listOf()
|
||||
|
||||
val subFqNames = moduleDescriptor.getSubPackagesOf(fqName, nameFilter)
|
||||
val result = ArrayList<DeclarationDescriptor>(subFqNames.size())
|
||||
|
||||
@@ -229,4 +229,17 @@ public trait DescriptorKindExclude {
|
||||
|
||||
override val fullyExcludedDescriptorKinds: Int get() = 0
|
||||
}
|
||||
|
||||
public object TopLevelPackages : DescriptorKindExclude {
|
||||
override fun excludes(descriptor: DeclarationDescriptor): Boolean {
|
||||
val fqName = when (descriptor) {
|
||||
is PackageFragmentDescriptor -> descriptor.fqName
|
||||
is PackageViewDescriptor -> descriptor.fqName
|
||||
else -> return false
|
||||
}
|
||||
return fqName.parent().isRoot()
|
||||
}
|
||||
|
||||
override val fullyExcludedDescriptorKinds: Int get() = 0
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user