Name filters filter by Name instead of String
This commit is contained in:
+1
-1
@@ -230,7 +230,7 @@ public class LazyJavaClassMemberScope(
|
||||
DescriptorUtils.getDispatchReceiverParameterIfNeeded(getContainingDeclaration())
|
||||
|
||||
override fun getClassifier(name: Name): ClassifierDescriptor? = nestedClasses(name)
|
||||
override fun getClassNames(nameFilter: (String) -> Boolean): Collection<Name> = nestedClassIndex().keySet() + enumEntryIndex().keySet()
|
||||
override fun getClassNames(nameFilter: (Name) -> Boolean): Collection<Name> = nestedClassIndex().keySet() + enumEntryIndex().keySet()
|
||||
|
||||
// TODO
|
||||
override fun getImplicitReceiversHierarchy(): List<ReceiverParameterDescriptor> = listOf()
|
||||
|
||||
+5
-5
@@ -288,16 +288,16 @@ public abstract class LazyJavaMemberScope(
|
||||
override fun getOwnDeclaredDescriptors() = getDescriptors()
|
||||
|
||||
override fun getDescriptors(kindFilter: (JetScope.DescriptorKind) -> Boolean,
|
||||
nameFilter: (String) -> Boolean) = allDescriptors()
|
||||
nameFilter: (Name) -> Boolean) = allDescriptors()
|
||||
|
||||
//TODO: use nameFilter
|
||||
protected fun computeDescriptors(kindFilter: (JetScope.DescriptorKind) -> Boolean,
|
||||
nameFilter: (String) -> Boolean): List<DeclarationDescriptor> {
|
||||
nameFilter: (Name) -> Boolean): List<DeclarationDescriptor> {
|
||||
val result = LinkedHashSet<DeclarationDescriptor>()
|
||||
|
||||
if (kindFilter(JetScope.DescriptorKind.CLASSIFIER)) {
|
||||
for (name in getClassNames(nameFilter)) {
|
||||
if (nameFilter(name.asString())) {
|
||||
if (nameFilter(name)) {
|
||||
// Null signifies that a class found in Java is not present in Kotlin (e.g. package class)
|
||||
result.addIfNotNull(getClassifier(name))
|
||||
}
|
||||
@@ -323,11 +323,11 @@ public abstract class LazyJavaMemberScope(
|
||||
|
||||
protected open fun addExtraDescriptors(result: MutableSet<DeclarationDescriptor>,
|
||||
kindFilter: (JetScope.DescriptorKind) -> Boolean,
|
||||
nameFilter: (String) -> Boolean) {
|
||||
nameFilter: (Name) -> Boolean) {
|
||||
// Do nothing
|
||||
}
|
||||
|
||||
protected abstract fun getClassNames(nameFilter: (String) -> Boolean): Collection<Name>
|
||||
protected abstract fun getClassNames(nameFilter: (Name) -> Boolean): Collection<Name>
|
||||
|
||||
override fun toString() = "Lazy scope for ${getContainingDeclaration()}"
|
||||
|
||||
|
||||
+5
-5
@@ -102,7 +102,7 @@ public class LazyPackageFragmentScopeForJavaPackage(
|
||||
|
||||
override fun addExtraDescriptors(result: MutableSet<DeclarationDescriptor>,
|
||||
kindFilter: (JetScope.DescriptorKind) -> Boolean,
|
||||
nameFilter: (String) -> Boolean) {
|
||||
nameFilter: (Name) -> Boolean) {
|
||||
result.addAll(deserializedPackageScope().getDescriptors(kindFilter, nameFilter))
|
||||
}
|
||||
|
||||
@@ -111,7 +111,7 @@ public class LazyPackageFragmentScopeForJavaPackage(
|
||||
override fun getAllMethodNames(): Collection<Name> = getClassNames({ true })
|
||||
}
|
||||
|
||||
override fun getClassNames(nameFilter: (String) -> Boolean): Collection<Name> {
|
||||
override fun getClassNames(nameFilter: (Name) -> Boolean): Collection<Name> {
|
||||
return jPackage.getClasses(nameFilter).stream()
|
||||
.filter { c -> c.getOriginKind() != JavaClass.OriginKind.KOTLIN_LIGHT_CLASS }
|
||||
.map { c -> c.getName() }.toList()
|
||||
@@ -134,7 +134,7 @@ public class LazyPackageFragmentScopeForJavaPackage(
|
||||
override fun getAllPropertyNames() = listOf<Name>()
|
||||
|
||||
// we don't use implementation from super which caches all descriptors and does not use filters
|
||||
override fun getDescriptors(kindFilter: (JetScope.DescriptorKind) -> Boolean, nameFilter: (String) -> Boolean): Collection<DeclarationDescriptor> {
|
||||
override fun getDescriptors(kindFilter: (JetScope.DescriptorKind) -> Boolean, nameFilter: (Name) -> Boolean): Collection<DeclarationDescriptor> {
|
||||
return computeDescriptors(kindFilter, nameFilter)
|
||||
}
|
||||
}
|
||||
@@ -163,8 +163,8 @@ public class LazyJavaStaticClassScope(
|
||||
}
|
||||
return super.getAllFunctionNames()
|
||||
}
|
||||
|
||||
override fun getClassNames(nameFilter: (String) -> Boolean): Collection<Name> = listOf()
|
||||
|
||||
override fun getClassNames(nameFilter: (Name) -> Boolean): Collection<Name> = listOf()
|
||||
override fun getClassifier(name: Name): ClassifierDescriptor? = null
|
||||
|
||||
override fun getSubPackages(): Collection<FqName> = listOf()
|
||||
|
||||
+2
-1
@@ -17,9 +17,10 @@
|
||||
package org.jetbrains.jet.lang.resolve.java.structure
|
||||
|
||||
import org.jetbrains.jet.lang.resolve.name.FqName
|
||||
import org.jetbrains.jet.lang.resolve.name.Name
|
||||
|
||||
public trait JavaPackage : JavaElement {
|
||||
public fun getClasses(nameFilter: (String) -> Boolean): Collection<JavaClass>
|
||||
public fun getClasses(nameFilter: (Name) -> Boolean): Collection<JavaClass>
|
||||
|
||||
public fun getSubPackages(): Collection<JavaPackage>
|
||||
|
||||
|
||||
+1
-1
@@ -258,7 +258,7 @@ public class EnumEntrySyntheticClassDescriptor extends ClassDescriptorBase {
|
||||
@Override
|
||||
public Collection<DeclarationDescriptor> getDescriptors(
|
||||
@NotNull Function1<? super DescriptorKind, ? extends Boolean> kindFilter,
|
||||
@NotNull Function1<? super String, ? extends Boolean> nameFilter
|
||||
@NotNull Function1<? super Name, ? extends Boolean> nameFilter
|
||||
) {
|
||||
return allDescriptors.invoke();
|
||||
}
|
||||
|
||||
@@ -36,7 +36,7 @@ public class SubpackagesScope(private val containingDeclaration: PackageViewDesc
|
||||
}
|
||||
|
||||
override fun getDescriptors(kindFilter: (JetScope.DescriptorKind) -> Boolean,
|
||||
nameFilter: (String) -> Boolean): Collection<DeclarationDescriptor> {
|
||||
nameFilter: (Name) -> Boolean): Collection<DeclarationDescriptor> {
|
||||
val subFqNames = containingDeclaration.getModule().getPackageFragmentProvider().getSubPackagesOf(containingDeclaration.getFqName())
|
||||
val result = ArrayList<DeclarationDescriptor>(subFqNames.size())
|
||||
for (subFqName in subFqNames) {
|
||||
|
||||
@@ -59,7 +59,7 @@ public abstract class AbstractScopeAdapter : JetScope {
|
||||
}
|
||||
|
||||
override fun getDescriptors(kindFilter: (JetScope.DescriptorKind) -> Boolean,
|
||||
nameFilter: (String) -> Boolean): Collection<DeclarationDescriptor> {
|
||||
nameFilter: (Name) -> Boolean): Collection<DeclarationDescriptor> {
|
||||
return workerScope.getDescriptors(kindFilter, nameFilter)
|
||||
}
|
||||
|
||||
|
||||
@@ -60,7 +60,7 @@ public class ChainedScope(private val containingDeclaration: DeclarationDescript
|
||||
override fun getDeclarationsByLabel(labelName: Name) = scopeChain.flatMap { it.getDeclarationsByLabel(labelName) }
|
||||
|
||||
override fun getDescriptors(kindFilter: (JetScope.DescriptorKind) -> Boolean,
|
||||
nameFilter: (String) -> Boolean): Collection<DeclarationDescriptor> {
|
||||
nameFilter: (Name) -> Boolean): Collection<DeclarationDescriptor> {
|
||||
val result = HashSet<DeclarationDescriptor>()
|
||||
scopeChain.flatMapTo(result) { it.getDescriptors(kindFilter, nameFilter) }
|
||||
return result
|
||||
|
||||
@@ -38,7 +38,7 @@ public class FilteringScope(private val workerScope: JetScope, private val predi
|
||||
override fun getLocalVariable(name: Name) = filterDescriptor(workerScope.getLocalVariable(name))
|
||||
|
||||
override fun getDescriptors(kindFilter: (JetScope.DescriptorKind) -> Boolean,
|
||||
nameFilter: (String) -> Boolean) = workerScope.getDescriptors(kindFilter, nameFilter).filter(predicate)
|
||||
nameFilter: (Name) -> Boolean) = workerScope.getDescriptors(kindFilter, nameFilter).filter(predicate)
|
||||
|
||||
override fun getImplicitReceiversHierarchy() = workerScope.getImplicitReceiversHierarchy()
|
||||
|
||||
|
||||
+1
-1
@@ -27,7 +27,7 @@ public class InnerClassesScopeWrapper(override val workerScope: JetScope) : Abst
|
||||
override fun getDeclarationsByLabel(labelName: Name) = workerScope.getDeclarationsByLabel(labelName).filterIsInstance(javaClass<ClassDescriptor>())
|
||||
|
||||
override fun getDescriptors(kindFilter: (JetScope.DescriptorKind) -> Boolean,
|
||||
nameFilter: (String) -> Boolean): List<ClassDescriptor> {
|
||||
nameFilter: (Name) -> Boolean): List<ClassDescriptor> {
|
||||
if (!kindFilter(JetScope.DescriptorKind.CLASSIFIER)) return listOf()
|
||||
return workerScope.getDescriptors({ it == JetScope.DescriptorKind.CLASSIFIER }, nameFilter).filterIsInstance(javaClass<ClassDescriptor>())
|
||||
}
|
||||
|
||||
@@ -51,7 +51,7 @@ public trait JetScope {
|
||||
* (that means that the implementation is not obliged to use the filters but may do so when it gives any performance advantage).
|
||||
*/
|
||||
public fun getDescriptors(kindFilter: (JetScope.DescriptorKind) -> Boolean = DescriptorKind.ALL,
|
||||
nameFilter: (String) -> Boolean = { true }): Collection<DeclarationDescriptor>
|
||||
nameFilter: (Name) -> Boolean = { true }): Collection<DeclarationDescriptor>
|
||||
|
||||
/**
|
||||
* Adds receivers to the list in order of locality, so that the closest (the most local) receiver goes first
|
||||
@@ -100,7 +100,7 @@ public trait JetScope {
|
||||
}
|
||||
|
||||
class object {
|
||||
public val ALL_NAME_FILTER: (String) -> Boolean = { true }
|
||||
public val ALL_NAME_FILTER: (Name) -> Boolean = { true }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@ public abstract class JetScopeImpl : JetScope {
|
||||
override fun getDeclarationsByLabel(labelName: Name): Collection<DeclarationDescriptor> = listOf()
|
||||
|
||||
override fun getDescriptors(kindFilter: (JetScope.DescriptorKind) -> Boolean,
|
||||
nameFilter: (String) -> Boolean): Collection<DeclarationDescriptor> = listOf()
|
||||
nameFilter: (Name) -> Boolean): Collection<DeclarationDescriptor> = listOf()
|
||||
|
||||
override fun getImplicitReceiversHierarchy(): List<ReceiverParameterDescriptor> = listOf()
|
||||
|
||||
|
||||
+1
-1
@@ -38,7 +38,7 @@ public class StaticScopeForKotlinClass(
|
||||
}
|
||||
|
||||
override fun getDescriptors(kindFilter: (JetScope.DescriptorKind) -> Boolean,
|
||||
nameFilter: (String) -> Boolean) = functions
|
||||
nameFilter: (Name) -> Boolean) = functions
|
||||
|
||||
override fun getOwnDeclaredDescriptors() = functions
|
||||
|
||||
|
||||
@@ -85,7 +85,7 @@ public class SubstitutingScope(private val workerScope: JetScope, private val su
|
||||
}
|
||||
|
||||
override fun getDescriptors(kindFilter: (JetScope.DescriptorKind) -> Boolean,
|
||||
nameFilter: (String) -> Boolean) = _allDescriptors
|
||||
nameFilter: (Name) -> Boolean) = _allDescriptors
|
||||
|
||||
override fun getOwnDeclaredDescriptors() = substitute(workerScope.getOwnDeclaredDescriptors())
|
||||
|
||||
|
||||
@@ -127,7 +127,7 @@ public class ErrorUtils {
|
||||
@Override
|
||||
public Collection<DeclarationDescriptor> getDescriptors(
|
||||
@NotNull Function1<? super DescriptorKind, ? extends Boolean> kindFilter,
|
||||
@NotNull Function1<? super String, ? extends Boolean> nameFilter
|
||||
@NotNull Function1<? super Name, ? extends Boolean> nameFilter
|
||||
) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
@@ -208,7 +208,7 @@ public class ErrorUtils {
|
||||
@Override
|
||||
public Collection<DeclarationDescriptor> getDescriptors(
|
||||
@NotNull Function1<? super DescriptorKind, ? extends Boolean> kindFilter,
|
||||
@NotNull Function1<? super String, ? extends Boolean> nameFilter
|
||||
@NotNull Function1<? super Name, ? extends Boolean> nameFilter
|
||||
) {
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
|
||||
+1
-1
@@ -120,7 +120,7 @@ public abstract class DeserializedMemberScope protected(
|
||||
protected abstract fun addNonDeclaredDescriptors(result: MutableCollection<DeclarationDescriptor>)
|
||||
|
||||
override fun getDescriptors(kindFilter: (JetScope.DescriptorKind) -> Boolean,
|
||||
nameFilter: (String) -> Boolean): Collection<DeclarationDescriptor> = allDescriptors.invoke()
|
||||
nameFilter: (Name) -> Boolean): Collection<DeclarationDescriptor> = allDescriptors.invoke()
|
||||
|
||||
override fun getImplicitReceiversHierarchy(): List<ReceiverParameterDescriptor> {
|
||||
val receiver = getImplicitReceiver()
|
||||
|
||||
Reference in New Issue
Block a user