LazyPackageFragmentScopeForJavaPackage uses name filter in getDescriptors() for methods and properties as well
This commit is contained in:
+2
-2
@@ -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
|
||||
|
||||
+8
-5
@@ -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))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+6
-6
@@ -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()
|
||||
|
||||
+3
-3
@@ -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() }
|
||||
|
||||
Reference in New Issue
Block a user