Added name filter to PackageFragmentProvider.getSubPackagesOf but do not know how to use it actually
This commit is contained in:
+2
-1
@@ -38,6 +38,7 @@ import org.jetbrains.jet.lang.resolve.java.JvmClassName
|
|||||||
import org.jetbrains.jet.descriptors.serialization.PackageData
|
import org.jetbrains.jet.descriptors.serialization.PackageData
|
||||||
import org.jetbrains.jet.lang.resolve.kotlin.DeserializationGlobalContextForJava
|
import org.jetbrains.jet.lang.resolve.kotlin.DeserializationGlobalContextForJava
|
||||||
import org.jetbrains.jet.lang.resolve.kotlin.incremental.cache.IncrementalCache
|
import org.jetbrains.jet.lang.resolve.kotlin.incremental.cache.IncrementalCache
|
||||||
|
import org.jetbrains.jet.lang.resolve.name.Name
|
||||||
|
|
||||||
public class IncrementalPackageFragmentProvider(
|
public class IncrementalPackageFragmentProvider(
|
||||||
sourceFiles: Collection<JetFile>,
|
sourceFiles: Collection<JetFile>,
|
||||||
@@ -81,7 +82,7 @@ public class IncrementalPackageFragmentProvider(
|
|||||||
fqNamesToLoad.forEach { createPackageFragment(it) }
|
fqNamesToLoad.forEach { createPackageFragment(it) }
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getSubPackagesOf(fqName: FqName): Collection<FqName> {
|
override fun getSubPackagesOf(fqName: FqName, nameFilter: (Name) -> Boolean): Collection<FqName> {
|
||||||
return fqNameToSubFqNames[fqName].orEmpty()
|
return fqNameToSubFqNames[fqName].orEmpty()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
-1
@@ -24,6 +24,7 @@ import org.jetbrains.jet.lang.descriptors.PackageFragmentProvider
|
|||||||
import org.jetbrains.jet.lang.descriptors.impl.MutablePackageFragmentDescriptor
|
import org.jetbrains.jet.lang.descriptors.impl.MutablePackageFragmentDescriptor
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName
|
import org.jetbrains.jet.lang.resolve.name.FqName
|
||||||
import java.util.HashMap
|
import java.util.HashMap
|
||||||
|
import org.jetbrains.jet.lang.resolve.name.Name
|
||||||
|
|
||||||
public class MutablePackageFragmentProvider(public val module: ModuleDescriptor) : PackageFragmentProvider {
|
public class MutablePackageFragmentProvider(public val module: ModuleDescriptor) : PackageFragmentProvider {
|
||||||
|
|
||||||
@@ -37,7 +38,7 @@ public class MutablePackageFragmentProvider(public val module: ModuleDescriptor)
|
|||||||
override fun getPackageFragments(fqName: FqName)
|
override fun getPackageFragments(fqName: FqName)
|
||||||
= ContainerUtil.createMaybeSingletonList<PackageFragmentDescriptor>(fqNameToPackage.get(fqName))
|
= ContainerUtil.createMaybeSingletonList<PackageFragmentDescriptor>(fqNameToPackage.get(fqName))
|
||||||
|
|
||||||
override fun getSubPackagesOf(fqName: FqName) = subPackages[fqName]
|
override fun getSubPackagesOf(fqName: FqName, nameFilter: (Name) -> Boolean) = subPackages[fqName]
|
||||||
|
|
||||||
public fun getOrCreateFragment(fqName: FqName): MutablePackageFragmentDescriptor {
|
public fun getOrCreateFragment(fqName: FqName): MutablePackageFragmentDescriptor {
|
||||||
if (!fqNameToPackage.containsKey(fqName)) {
|
if (!fqNameToPackage.containsKey(fqName)) {
|
||||||
|
|||||||
@@ -143,7 +143,8 @@ public class ResolveSession implements KotlinCodeAnalyzer {
|
|||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public Collection<FqName> getSubPackagesOf(@NotNull FqName fqName) {
|
public Collection<FqName> getSubPackagesOf(
|
||||||
|
@NotNull FqName fqName, @NotNull Function1<? super Name, ? extends Boolean> nameFilter) {
|
||||||
LazyPackageDescriptor packageDescriptor = getPackageFragment(fqName);
|
LazyPackageDescriptor packageDescriptor = getPackageFragment(fqName);
|
||||||
if (packageDescriptor == null) {
|
if (packageDescriptor == null) {
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
@@ -457,7 +458,7 @@ public class ResolveSession implements KotlinCodeAnalyzer {
|
|||||||
@NotNull LazyPackageDescriptor current
|
@NotNull LazyPackageDescriptor current
|
||||||
) {
|
) {
|
||||||
result.add(current);
|
result.add(current);
|
||||||
for (FqName subPackage : packageFragmentProvider.getSubPackagesOf(current.getFqName())) {
|
for (FqName subPackage : packageFragmentProvider.getSubPackagesOf(current.getFqName(), JetScope.ALL_NAME_FILTER)) {
|
||||||
LazyPackageDescriptor fragment = getPackageFragment(subPackage);
|
LazyPackageDescriptor fragment = getPackageFragment(subPackage);
|
||||||
assert fragment != null : "Couldn't find fragment for " + subPackage;
|
assert fragment != null : "Couldn't find fragment for " + subPackage;
|
||||||
collectAllPackages(result, fragment);
|
collectAllPackages(result, fragment);
|
||||||
|
|||||||
@@ -211,7 +211,8 @@ public abstract class AbstractJetDiagnosticsTest extends BaseDiagnosticsTest {
|
|||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public Collection<FqName> getSubPackagesOf(@NotNull FqName fqName) {
|
public Collection<FqName> getSubPackagesOf(
|
||||||
|
@NotNull FqName fqName, @NotNull Function1<? super Name, ? extends Boolean> nameFilter) {
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
+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.java.lazy.descriptors.*
|
||||||
import org.jetbrains.jet.lang.resolve.kotlin.KotlinJvmBinaryClass
|
import org.jetbrains.jet.lang.resolve.kotlin.KotlinJvmBinaryClass
|
||||||
import org.jetbrains.jet.lang.descriptors.PackageFragmentProvider
|
import org.jetbrains.jet.lang.descriptors.PackageFragmentProvider
|
||||||
|
import org.jetbrains.jet.lang.resolve.name.Name
|
||||||
|
|
||||||
public class LazyJavaPackageFragmentProvider(
|
public class LazyJavaPackageFragmentProvider(
|
||||||
outerContext: GlobalJavaResolverContext,
|
outerContext: GlobalJavaResolverContext,
|
||||||
@@ -78,7 +79,7 @@ public class LazyJavaPackageFragmentProvider(
|
|||||||
|
|
||||||
override fun getPackageFragments(fqName: FqName) = getPackageFragment(fqName)?.let {listOf(it)}.orEmpty()
|
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)
|
fun resolveKotlinBinaryClass(kotlinClass: KotlinJvmBinaryClass) = c.deserializedDescriptorResolver.resolveClass(kotlinClass)
|
||||||
|
|
||||||
|
|||||||
@@ -16,8 +16,8 @@
|
|||||||
|
|
||||||
package org.jetbrains.jet.lang.descriptors
|
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.FqName
|
||||||
|
import org.jetbrains.jet.lang.resolve.name.Name
|
||||||
|
|
||||||
public trait PackageFragmentProvider {
|
public trait PackageFragmentProvider {
|
||||||
public fun getPackageFragments(fqName: FqName): List<PackageFragmentDescriptor>
|
public fun getPackageFragments(fqName: FqName): List<PackageFragmentDescriptor>
|
||||||
@@ -25,5 +25,5 @@ public trait PackageFragmentProvider {
|
|||||||
/**
|
/**
|
||||||
* @return declared subpackages of {@code fqName}
|
* @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 org.jetbrains.jet.lang.resolve.name.FqName
|
||||||
|
|
||||||
import java.util.*
|
import java.util.*
|
||||||
import kotlin.List
|
import org.jetbrains.jet.lang.resolve.name.Name
|
||||||
import kotlin.Collection
|
|
||||||
|
|
||||||
public class CompositePackageFragmentProvider(// can be modified from outside
|
public class CompositePackageFragmentProvider(// can be modified from outside
|
||||||
private val providers: List<PackageFragmentProvider>) : PackageFragmentProvider {
|
private val providers: List<PackageFragmentProvider>) : PackageFragmentProvider {
|
||||||
@@ -36,10 +35,10 @@ public class CompositePackageFragmentProvider(// can be modified from outside
|
|||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getSubPackagesOf(fqName: FqName): Collection<FqName> {
|
override fun getSubPackagesOf(fqName: FqName, nameFilter: (Name) -> Boolean): Collection<FqName> {
|
||||||
val result = HashSet<FqName>()
|
val result = HashSet<FqName>()
|
||||||
for (provider in providers) {
|
for (provider in providers) {
|
||||||
result.addAll(provider.getSubPackagesOf(fqName))
|
result.addAll(provider.getSubPackagesOf(fqName, nameFilter))
|
||||||
}
|
}
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ public class SubpackagesScope(private val containingDeclaration: PackageViewDesc
|
|||||||
|
|
||||||
override fun getDescriptors(kindFilter: (JetScope.DescriptorKind) -> Boolean,
|
override fun getDescriptors(kindFilter: (JetScope.DescriptorKind) -> Boolean,
|
||||||
nameFilter: (Name) -> Boolean): Collection<DeclarationDescriptor> {
|
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())
|
val result = ArrayList<DeclarationDescriptor>(subFqNames.size())
|
||||||
for (subFqName in subFqNames) {
|
for (subFqName in subFqNames) {
|
||||||
result.addIfNotNull<DeclarationDescriptor>(getPackage(subFqName.shortName()))
|
result.addIfNotNull<DeclarationDescriptor>(getPackage(subFqName.shortName()))
|
||||||
|
|||||||
@@ -95,7 +95,7 @@ class BuiltinsPackageFragment(storageManager: StorageManager, module: ModuleDesc
|
|||||||
override fun getPackageFragments(fqName: FqName): List<PackageFragmentDescriptor>
|
override fun getPackageFragments(fqName: FqName): List<PackageFragmentDescriptor>
|
||||||
= if (KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME == fqName) listOf(this@BuiltinsPackageFragment) else listOf()
|
= 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()
|
= if (fqName.isRoot()) setOf(KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME) else listOf()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -127,7 +127,7 @@ public class DeserializerForDecompiler(val packageDirectory: VirtualFile, val di
|
|||||||
return listOf(createDummyPackageFragment(fqName))
|
return listOf(createDummyPackageFragment(fqName))
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getSubPackagesOf(fqName: FqName): Collection<FqName> {
|
override fun getSubPackagesOf(fqName: FqName, nameFilter: (Name) -> Boolean): Collection<FqName> {
|
||||||
throw UnsupportedOperationException("This method is not supposed to be called.")
|
throw UnsupportedOperationException("This method is not supposed to be called.")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -56,7 +56,7 @@ private class PackageFragmentProviderForMissingDependencies(val moduleDescriptor
|
|||||||
override fun getPackageFragments(fqName: FqName): List<PackageFragmentDescriptor> {
|
override fun getPackageFragments(fqName: FqName): List<PackageFragmentDescriptor> {
|
||||||
return listOf(PackageFragmentWithMissingDependencies(fqName, moduleDescriptor))
|
return listOf(PackageFragmentWithMissingDependencies(fqName, moduleDescriptor))
|
||||||
}
|
}
|
||||||
override fun getSubPackagesOf(fqName: FqName): Collection<FqName> {
|
override fun getSubPackagesOf(fqName: FqName, nameFilter: (Name) -> Boolean): Collection<FqName> {
|
||||||
throw UnsupportedOperationException("This method is not supposed to be called.")
|
throw UnsupportedOperationException("This method is not supposed to be called.")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user