LazyPackageFragmentScopeForJavaPackage uses name filter in getDescriptors() for methods and properties as well

This commit is contained in:
Valentin Kipyatkov
2014-10-31 20:30:37 +03:00
parent c7527e4a4d
commit e51993d339
4 changed files with 19 additions and 16 deletions
@@ -45,7 +45,7 @@ public class LazyJavaClassMemberScope(
override fun computeMemberIndex(): MemberIndex {
return object : ClassMemberIndex(jClass, { !it.isStatic() }) {
// For SAM-constructors
override fun getAllMethodNames(): Collection<Name> = super.getAllMethodNames() + getClassNames({ true })
override fun getMethodNames(nameFilter: (Name) -> Boolean): Collection<Name> = super.getMethodNames(nameFilter) + getClassNames(nameFilter)
}
}
@@ -214,7 +214,7 @@ public class LazyJavaClassMemberScope(
if (field != null) {
EnumEntrySyntheticClassDescriptor.create(c.storageManager, getContainingDeclaration(), name,
c.storageManager.createLazyValue {
memberIndex().getAllFieldNames() + memberIndex().getAllMethodNames()
memberIndex().getAllFieldNames() + memberIndex().getMethodNames({true})
}, c.sourceElementFactory.source(field))
}
else null
@@ -208,7 +208,7 @@ public abstract class LazyJavaMemberScope(
}
override fun getFunctions(name: Name) = functions(name)
protected open fun getAllFunctionNames(): Collection<Name> = memberIndex().getAllMethodNames()
protected open fun getFunctionNames(nameFilter: (Name) -> Boolean): Collection<Name> = memberIndex().getMethodNames(nameFilter)
protected abstract fun computeNonDeclaredProperties(name: Name, result: MutableCollection<PropertyDescriptor>)
@@ -290,7 +290,6 @@ public abstract class LazyJavaMemberScope(
override fun getDescriptors(kindFilter: (JetScope.DescriptorKind) -> Boolean,
nameFilter: (Name) -> Boolean) = allDescriptors()
//TODO: use nameFilter
protected fun computeDescriptors(kindFilter: (JetScope.DescriptorKind) -> Boolean,
nameFilter: (Name) -> Boolean): List<DeclarationDescriptor> {
val result = LinkedHashSet<DeclarationDescriptor>()
@@ -305,14 +304,18 @@ public abstract class LazyJavaMemberScope(
}
if (kindFilter(JetScope.DescriptorKind.NON_EXTENSION_FUNCTION)) {
for (name in getAllFunctionNames()) {
result.addAll(getFunctions(name))
for (name in getFunctionNames(nameFilter)) {
if (nameFilter(name)) {
result.addAll(getFunctions(name))
}
}
}
if (kindFilter(JetScope.DescriptorKind.NON_EXTENSION_PROPERTY)) {
for (name in getAllPropertyNames()) {
result.addAll(getProperties(name))
if (nameFilter(name)) {
result.addAll(getProperties(name))
}
}
}
@@ -108,7 +108,7 @@ public class LazyPackageFragmentScopeForJavaPackage(
override fun computeMemberIndex(): MemberIndex = object : MemberIndex by EMPTY_MEMBER_INDEX {
// For SAM-constructors
override fun getAllMethodNames(): Collection<Name> = getClassNames({ true })
override fun getMethodNames(nameFilter: (Name) -> Boolean): Collection<Name> = getClassNames(nameFilter)
}
override fun getClassNames(nameFilter: (Name) -> Boolean): Collection<Name> {
@@ -148,20 +148,20 @@ public class LazyJavaStaticClassScope(
override fun computeMemberIndex(): MemberIndex {
val delegate = ClassMemberIndex(jClass) { it.isStatic() }
return object : MemberIndex by delegate {
override fun getAllMethodNames(): Collection<Name> {
override fun getMethodNames(nameFilter: (Name) -> Boolean): Collection<Name> {
// Should be a super call, but KT-2860
return delegate.getAllMethodNames() +
return delegate.getMethodNames(nameFilter) +
// For SAM-constructors
jClass.getInnerClasses().map { it.getName() }
}
}
}
override fun getAllFunctionNames(): Collection<Name> {
override fun getFunctionNames(nameFilter: (Name) -> Boolean): Collection<Name> {
if (jClass.isEnum()) {
return super.getAllFunctionNames() + listOf(DescriptorUtils.ENUM_VALUE_OF, DescriptorUtils.ENUM_VALUES)
return super.getFunctionNames(nameFilter) + listOf(DescriptorUtils.ENUM_VALUE_OF, DescriptorUtils.ENUM_VALUES)
}
return super.getAllFunctionNames()
return super.getFunctionNames(nameFilter)
}
override fun getClassNames(nameFilter: (Name) -> Boolean): Collection<Name> = listOf()
@@ -24,7 +24,7 @@ import java.util.HashSet
trait MemberIndex {
fun findMethodsByName(name: Name): Collection<JavaMethod>
fun getAllMethodNames(): Collection<Name>
fun getMethodNames(nameFilter: (Name) -> Boolean): Collection<Name>
fun findFieldByName(name: Name): JavaField?
fun getAllFieldNames(): Collection<Name>
@@ -32,7 +32,7 @@ trait MemberIndex {
object EMPTY_MEMBER_INDEX : MemberIndex {
override fun findMethodsByName(name: Name) = listOf<JavaMethod>()
override fun getAllMethodNames() = listOf<Name>()
override fun getMethodNames(nameFilter: (Name) -> Boolean) = listOf<Name>()
override fun findFieldByName(name: Name): JavaField? = null
override fun getAllFieldNames() = listOf<Name>()
@@ -48,7 +48,7 @@ open class ClassMemberIndex(val jClass: JavaClass, val memberFilter: (JavaMember
private val fields = jClass.getFields().stream().filter(memberFilter).valuesToMap { m -> m.getName() }
override fun findMethodsByName(name: Name): Collection<JavaMethod> = methods[name] ?: listOf()
override fun getAllMethodNames(): Collection<Name> = jClass.getAllMemberNames(methodFilter) { getMethods() }
override fun getMethodNames(nameFilter: (Name) -> Boolean): Collection<Name> = jClass.getAllMemberNames(methodFilter) { getMethods() }
override fun findFieldByName(name: Name): JavaField? = fields[name]
override fun getAllFieldNames(): Collection<Name> = jClass.getAllMemberNames(memberFilter) { getFields() }