Added name filter to PackageFragmentProvider.getSubPackagesOf but do not know how to use it actually
This commit is contained in:
+2
-1
@@ -24,6 +24,7 @@ import org.jetbrains.jet.lang.descriptors.ClassDescriptor
|
||||
import org.jetbrains.jet.lang.resolve.java.lazy.descriptors.*
|
||||
import org.jetbrains.jet.lang.resolve.kotlin.KotlinJvmBinaryClass
|
||||
import org.jetbrains.jet.lang.descriptors.PackageFragmentProvider
|
||||
import org.jetbrains.jet.lang.resolve.name.Name
|
||||
|
||||
public class LazyJavaPackageFragmentProvider(
|
||||
outerContext: GlobalJavaResolverContext,
|
||||
@@ -78,7 +79,7 @@ public class LazyJavaPackageFragmentProvider(
|
||||
|
||||
override fun getPackageFragments(fqName: FqName) = getPackageFragment(fqName)?.let {listOf(it)}.orEmpty()
|
||||
|
||||
override fun getSubPackagesOf(fqName: FqName) = getPackageFragment(fqName)?.getMemberScope()?.getSubPackages().orEmpty()
|
||||
override fun getSubPackagesOf(fqName: FqName, nameFilter: (Name) -> Boolean) = getPackageFragment(fqName)?.getMemberScope()?.getSubPackages().orEmpty()
|
||||
|
||||
fun resolveKotlinBinaryClass(kotlinClass: KotlinJvmBinaryClass) = c.deserializedDescriptorResolver.resolveClass(kotlinClass)
|
||||
|
||||
|
||||
@@ -16,8 +16,8 @@
|
||||
|
||||
package org.jetbrains.jet.lang.descriptors
|
||||
|
||||
import org.jetbrains.annotations.ReadOnly
|
||||
import org.jetbrains.jet.lang.resolve.name.FqName
|
||||
import org.jetbrains.jet.lang.resolve.name.Name
|
||||
|
||||
public trait PackageFragmentProvider {
|
||||
public fun getPackageFragments(fqName: FqName): List<PackageFragmentDescriptor>
|
||||
@@ -25,5 +25,5 @@ public trait PackageFragmentProvider {
|
||||
/**
|
||||
* @return declared subpackages of {@code fqName}
|
||||
*/
|
||||
public fun getSubPackagesOf(fqName: FqName): Collection<FqName>
|
||||
public fun getSubPackagesOf(fqName: FqName, nameFilter: (Name) -> Boolean): Collection<FqName>
|
||||
}
|
||||
|
||||
+3
-4
@@ -21,8 +21,7 @@ import org.jetbrains.jet.lang.descriptors.PackageFragmentProvider
|
||||
import org.jetbrains.jet.lang.resolve.name.FqName
|
||||
|
||||
import java.util.*
|
||||
import kotlin.List
|
||||
import kotlin.Collection
|
||||
import org.jetbrains.jet.lang.resolve.name.Name
|
||||
|
||||
public class CompositePackageFragmentProvider(// can be modified from outside
|
||||
private val providers: List<PackageFragmentProvider>) : PackageFragmentProvider {
|
||||
@@ -36,10 +35,10 @@ public class CompositePackageFragmentProvider(// can be modified from outside
|
||||
return result
|
||||
}
|
||||
|
||||
override fun getSubPackagesOf(fqName: FqName): Collection<FqName> {
|
||||
override fun getSubPackagesOf(fqName: FqName, nameFilter: (Name) -> Boolean): Collection<FqName> {
|
||||
val result = HashSet<FqName>()
|
||||
for (provider in providers) {
|
||||
result.addAll(provider.getSubPackagesOf(fqName))
|
||||
result.addAll(provider.getSubPackagesOf(fqName, nameFilter))
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ public class SubpackagesScope(private val containingDeclaration: PackageViewDesc
|
||||
|
||||
override fun getDescriptors(kindFilter: (JetScope.DescriptorKind) -> Boolean,
|
||||
nameFilter: (Name) -> Boolean): Collection<DeclarationDescriptor> {
|
||||
val subFqNames = containingDeclaration.getModule().getPackageFragmentProvider().getSubPackagesOf(containingDeclaration.getFqName())
|
||||
val subFqNames = containingDeclaration.getModule().getPackageFragmentProvider().getSubPackagesOf(containingDeclaration.getFqName(), nameFilter)
|
||||
val result = ArrayList<DeclarationDescriptor>(subFqNames.size())
|
||||
for (subFqName in subFqNames) {
|
||||
result.addIfNotNull<DeclarationDescriptor>(getPackage(subFqName.shortName()))
|
||||
|
||||
@@ -95,7 +95,7 @@ class BuiltinsPackageFragment(storageManager: StorageManager, module: ModuleDesc
|
||||
override fun getPackageFragments(fqName: FqName): List<PackageFragmentDescriptor>
|
||||
= if (KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME == fqName) listOf(this@BuiltinsPackageFragment) else listOf()
|
||||
|
||||
override fun getSubPackagesOf(fqName: FqName): Collection<FqName>
|
||||
override fun getSubPackagesOf(fqName: FqName, nameFilter: (Name) -> Boolean): Collection<FqName>
|
||||
= if (fqName.isRoot()) setOf(KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME) else listOf()
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user